在使用标准组件运行一个微不足道的Grails应用程序时,我在生产中遇到了一个非常奇怪的稳定性问题。
经过一段时间的正常操作后,状态CLOSE_WAIT中的Tomcat (CLOSE_WAIT) TCP连接数量会增加,直到Tomcat达到线程上限(Maximum number of threads (N) created for connector),之后Tomcat就会停止运行。
通常情况下,这表示应用程序包含的代码没有正确关闭其TCP连接。但是,这个应用程序中的Grails代码真的很琐碎,没有单独启动任何TCP连接,所以我想不出我的代码可能导致CLOSE_WAIT问题的任何场景。
此外,栈中
对50个虚拟用户执行负载测试的结果有很大差异:
方法1)单机(m3.media)
No of Threads: 50 users
Ramp Uptime: 60 sec
方法2) JMeter初级-二级分布式测试
i) server - linux machine (m3.medium)
ii) client1 - linux machine (m3.medium) - No of Threads: 25, Ramp up time: 60 sec
iii) client2 - linux machine (m3.medium) - No of Threads: 25, Ramp up tim
在CentOS 6中,这段文字包含了/etc/tune-profiles/my-server/ktune.sysconfig (我指的是解释代码正在做什么的注释):
# This is the I/O scheduler ktune will use. This will *not* override anything
# explicitly set on the kernel command line, nor will it change the scheduler
# for any block device that is using a non-default scheduler