在使用标准组件运行一个微不足道的Grails应用程序时,我在生产中遇到了一个非常奇怪的稳定性问题。
经过一段时间的正常操作后,状态CLOSE_WAIT中的Tomcat (CLOSE_WAIT) TCP连接数量会增加,直到Tomcat达到线程上限(Maximum number of threads (N) created for connector),之后Tomcat就会停止运行。
通常情况下,这表示应用程序包含的代码没有正确关闭其TCP连接。但是,这个应用程序中的Grails代码真的很琐碎,没有单独启动任何TCP连接,所以我想不出我的代码可能导致CLOSE_WAIT问题的任何场景。
此外,栈中
这是我的setenv.bat (windows安装)。它是MySQL企业监控服务经理。
set JAVA_HOME=D:\MYSQL_~2\SERVIC~1\java
set JAVA_OPTS= ++JvmOptions="-XX:+UseParallelOldGC" ++JvmOptions="-XX:+UseBiasedLocking" ++JvmOptions="-XX:+HeapDumpOnOutOfMemoryError" ++JvmOptions="-XX:HeapDumpPath=D:\MYSQL_~2\SERVIC~1