内存为2G,CPU为四颗2.8G,tomcat 4.1.30,写一个最简单的JSP页面,如下:
gMH北方站长站 代码gMH北方站长站
<%gMH北方站长站
trygMH北方站长站
{gMH北方站长站
Thread.sleep(30000);gMH北方站长站
out.println("fuck");gMH北方站长站
} catch (InterruptedException e) {gMH北方站长站
e.printStackTrace();gMH北方站长站
} %>gMH北方站长站
然后开Jmetor来压,同时开jconsole来监测tomcat的情况,并不断调整XMX,XMS,XSS这三个参数,得出下表:gMH北方站长站
XMX XMS XSS down时的tomcat thread数gMH北方站长站
500M 500M 128K 642gMH北方站长站
800M 800M 64K 485gMH北方站长站
1024M 1024M 64K 374gMH北方站长站
1024M 1024M 128K 374gMH北方站长站
1024M 1024M 512K 371gMH北方站长站
根据该表,可以看出,随XMX,即是分配给JVM的内存数越大,tomcat所能开的thread数就越小,而Xss这个参数几乎不影响任何测试结果。我猜想tomcat开线程是使用linux的内存,而不是JVM的内存。当分配给JVM的内存越大,操作系统所能用于分配的内存就越小,于是所能开的线程数就越小。gMH北方站长站
大家有什么解决方案吗?难道大家都没遇过这个问题?我的设想是可能linux初始每个进程(也就是tomcat开的线程)有一个初始大小,这应该是一个内核参数来的,应该把它调小就可以了,但我不知道怎样去调。gMH北方站长站
gMH北方站长站
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面