Grails应用程序

时间:2016-03-05 13:34:16

标签: grails nginx tcp tomcat7 rest-client

我已经在Apache Tomcat 7上部署了一个Grails应用程序。上周,由于空线程池,应用程序出现故障,但没有那么多用户可以做到这一点。当我查看服务器时,我发现端口8080上有很多java线程和tcp进程没有关闭 - 处于状态CLOSE_WAIT。

Screenshot of netstat for 8080 port

应用程序通过groovy.net.http.RestClient与远程MSSQL数据库以及远程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
        }
    }
  }

更新

我发现CLOSE_WAIT连接与nginx 499错误同时出现 - 客户端关闭请求。

1 个答案:

答案 0 :(得分:0)

我不再拥有Grails 2项目了。我从未见过这个错误。但我通常不会使用jtds驱动程序。这是我用的。

driverClassName: "com.mysql.jdbc.Driver"
dialect: "org.hibernate.dialect.MySQL5InnoDBDialect"
url: "jdbc:mysql://localhost/myroject?useUnicode=yes&characterEncoding=UTF-8"

我记得在过去我必须下载数据库驱动程序并将其添加到lib目录。