转自:http://www.linuxdiyf.com/viewarticle.php?id=86772
有有可能是linux的线程机制会产生JVM出错的问题,特别是在连接高峰期间经常出现这样的问题,tomcat在linux下也出现类似情况。
解决办法是在环境变量中设置: _JAVA_SR_SIGNUM = 12 基本就可以解决。
Below is a clipping from Sun on working around JVM crashes under high thread counts in the JVM 1.3 for Linux On Linux,
以下是在sun在LINUX 上使用JVM1.3导致JVM崩溃的一个片段
use a larger signal number for hotspot thread suspension/resumption handler.
hotspot(热点)线程暂停/恢复处理器需要使用一个更大的信号数。
The signal number being used is specified by environment variable _JAVA_SR_SIGNUM.
这个大信号数使用环境变量_JAVA_SR_SIGNUM来指定。
Setting it to a number larger than SIGSEGV (11) will solve the problem.
设置一个比SIGSEGV (11)大的数字就可以解决这个问题。
A good number to use is 12, which is SIGUSR2.
SIGUSR2使用12是一个比较好的数字。
Using signal 16 to work around the problem might have potential problems.
使用信号16来解决此问题可能会导致潜在的问题
So on tcsh, "setenv _JAVA_SR_SIGNUM 12" can solve the problem.
所以使用"set env _JAVA_SR_SIGNUM 12"能解决这个问题
上次有一同志问在连接数据库的时候也出现过connection reset错误,这有可能是连接没有正常释放(不一定是程序的问题),最好在连接迟中设置无效连接超时的最大值。
本文介绍了解决Linux环境下因高并发导致JVM崩溃的方法。通过调整环境变量_JAVA_SR_SIGNUM为大于SIGSEGV(11)的数值,如12(SIGUSR2),可以有效避免JVM在高线程数时出现的问题。
682

被折叠的 条评论
为什么被折叠?



