2016-10-26 33 views
3

我的Tomcat上運行的Spring應用程序打開很多連接到本地主機這樣的:JVM Tomcat的春天MVC應用程序超時等待連接池

tcp6  1  0 localhost:4431   localhost:44178   CLOSE_WAIT 2393/java  
tcp6  1  0 localhost:4431   localhost:44279   CLOSE_WAIT 2393/java  
tcp6  1  0 localhost:4431   localhost:44264   CLOSE_WAIT 2393/java  
tcp6  1  0 localhost:4431   localhost:44160   CLOSE_WAIT 2393/java  
tcp6  1  0 localhost:4431   localhost:44224   CLOSE_WAIT 2393/java  

並導致timeout waiting for connection pool.

你有一個想法是什麼連接可能是?

server.xml看起來是這樣的:

<?xml version='1.0' encoding='utf-8'?> 
    <Server port="8005" shutdown="SHUTDOWN"> 
     <Listener className="org.apache.catalina.core.JasperListener" /> 
     <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> 
     <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> 
     <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> 
     <Realm className="org.apache.catalina.realm.MemoryRealm" /> 
     <GlobalNamingResources> 
     <Resource name="UserDatabase" auth="Container" 
        type="org.apache.catalina.UserDatabase" 
        description="User database that can be updated and saved" 
        factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 
        pathname="conf/tomcat-users.xml" /> 
     </GlobalNamingResources> 
     <Service name="Catalina"> 
     <Connector port="8080" protocol="HTTP/1.1" 
        compression="on" 
        compressionMinSize="2048" 
        noCompressionUserAgents="gozilla, traviata" 
        compressableMimeType=" 
         text/html, 
         text/xml, 
         text/plain, 
         text/css, 
         text/javascript, 
         text/json, 
         application/x-javascript, 
         application/javascript, 
         application/json, 
         application/x-font-woff, 
         image/png, 
         image/jpeg, 
         image/gif, 
         image/svg+xml 
        " 
        connectionTimeout="20000" 
        URIEncoding="UTF-8" 
        maxThreads="10000" 
        maxConnections="-1" 
        redirectPort="4431" /> 
     <Connector port="4431" protocol="HTTP/1.1" 
        compression="on" 
        compressionMinSize="2048" 
        noCompressionUserAgents="gozilla, traviata" 
        compressableMimeType=" 
         text/html, 
         text/xml, 
         text/plain, 
         text/css, 
         text/javascript, 
         text/json, 
         application/x-javascript, 
         application/javascript, 
         application/json, 
         application/x-font-woff, 
         image/png, 
         image/jpeg, 
         image/gif, 
         image/svg+xml 
        " 
        connectionTimeout="20000" 
        URIEncoding="UTF-8" 
        maxThreads="10000" 
        maxConnections="-1" 
        scheme="https" 
        secure="true" 
        clientAuth="false" 
        proxyPort="443" /> 
     <Engine name="Catalina" defaultHost="localhost"> 
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 
      <Realm className="org.apache.catalina.realm.LockOutRealm"> 
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
        resourceName="UserDatabase"/> 
      </Realm> 
      <Host name="localhost" appBase="webapps" 
       unpackWARs="true" autoDeploy="true"> 
      <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
        prefix="localhost_access_log." suffix=".txt" 
        pattern="%h %A %u %t &quot;%r&quot; %s %b &quot;%{Referer}i&quot; &quot;%{User-Agent}i&quot;" /> 
      </Host> 
     </Engine> 
     </Service> 
    </Server> 

端口4431是主要的連接器的端口。它看起來像應用程序自己調用。

+1

您可能會打開連接,然後在完成操作後再關閉它們。追蹤所有的開放,並關閉它們。 – Compass

+0

我不打開連接到本地主機。我使用的REST API非常慢,但API在另一臺服務器上運行。爲什麼有從本地連接到本地主機? –

+0

這不是你的數據庫的左側端口?你有沒有在tomcat的conf目錄中檢查'4431'? –

回答

0

看來你有一個SSL配置在Tomcat中不結束,那麼你可以爲4431端口完全刪除連接器,並用proxyPort取代8080連接器的redirectPort屬性=「443」

0

要弄清楚什麼是繼續在你的應用程序中,我會運行jconsole並查看它是什麼線程。它是Java SDK的一部分,它允許您查看在Tomcat中運行的線程。

+0

我會試試看。 –

相關問題