在使用标准组件运行一个简单的 Grails 应用程序时,我在生产中遇到了一个非常奇怪的稳定性问题。
正常运行一段时间后,Tomcat ( jsvc
) TCP 连接的数量会CLOSE_WAIT
增加,直到 Tomcat 达到其线程上限 ( Maximum number of threads (N) created for connector
),之后 Tomcat 就会停止。
通常这表明应用程序包含未正确关闭其 TCP 连接的代码。但是,我在这个应用程序中的 Grails 代码真的很琐碎,并且不会自行启动任何 TCP 连接,所以我想不出我的代码可能导致CLOSE_WAIT
问题的任何场景。
此外,堆栈中的所有组件都是我认为没有错误的标准东西。我在捆绑在 Ubuntu 9.1 ( apt-get install tomcat6
) 中的标准 Tomcat 6 下运行 Grails 1.2.1。
- 这是一个已知问题吗?
- 你会如何解决它?