我在Apache Tomcat 7上部署了一個Grails應用程序。上週由於空的線程池導致應用程序關閉,但沒有太多的用戶來做這件事。當我查看服務器時,發現端口8080上有很多未關閉的java線程和tcp進程 - 處於CLOSE_WAIT狀態。Grails應用程序中的許多持久CLOSE_WAIT連接
Screenshot of netstat for 8080 port
的應用與遠程MSSQL數據庫,並且還通過groovy.net.http.RestClient遠程CRM系統通信。作爲一個網絡服務器,我們使用Nginx。我查看了所有日誌(tomcat,nginx訪問日誌)並沒有意識到任何奇怪的活動。有沒有人在類似的技術上面臨這樣的問題?
Grails的版本是2.3.7
這裏有一個連接設置DB:
production {
dataSource {
// Production MS SQL database configuration
//pooled = true
driverClassName = "net.sourceforge.jtds.jdbc.Driver"
url = "jdbc:jtds:sqlserver://blahblahblah"
username = "username"
password = "password"
dbCreate = "none"
properties {
// See http://grails.org/doc/latest/guide/conf.html#dataSource for documentation
jmxEnabled = true
initialSize = 5
maxActive = 1250
minIdle = 20
maxIdle = 100
maxWait = 15000
maxAge = 10 * 60000
timeBetweenEvictionRunsMillis = 5000
minEvictableIdleTimeMillis = 60000
validationQuery = "SELECT 1"
validationQueryTimeout = 3
validationInterval = 15000
testOnBorrow = true
testWhileIdle = true
testOnReturn = false
jdbcInterceptors = "ConnectionState"
defaultTransactionIsolation = java.sql.Connection.TRANSACTION_READ_UNCOMMITTED
}
}
}
UPDATE
我發現了CLOSE_WAIT連接在同一時間發生的nginx的499錯誤 - 客戶端關閉請求。
什麼版本的Grails?你可以把一個mssql連接代碼。它使用連接池嗎? – Arjang
我更新了問題。 – sovanegger