注册
 找回密码
 注册
江西广告网
查看: 452|回复: 0
打印 上一主题 下一主题

[JAVA] Java

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2008-12-26 17:53:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
  一台后端server,OS为Slackware 8.1,装了tomcat 4.1.30,近期在繁忙时期经常会死机,死状就是"java.lang.OutOfMemoryError: unable to create new native thread".是tomcat创建不了新的线程来应答请求了。于是我搭了一个环境专门来测试这个问题。内存为2G,CPU为四颗2.8G,tomcat 4.1.30,写一个最简单的JSP页面,如下:   代码   <%   try   {   Thread.sleep(30000);   out.println("fuck");   } catch (InterruptedException e) {   e.printStackTrace();   } %>   然后开Jmetor来压,同时开jconsole来监测tomcat的情况,并不断调整XMX,XMS,XSS这三个参数,得出下表:   XMX XMS XSS down时的tomcat thread数   500M 500M 128K 642   800M 800M 64K 485   1024M 1024M 64K 374   1024M 1024M 128K 374   1024M 1024M 512K 371   根据该表,可以看出,随XMX,即是分配给JVM的内存数越大,tomcat所能开的thread数就越小,而Xss这个参数几乎不影响任何测试结果。我猜想tomcat开线程是使用linux的内存,而不是JVM的内存。当分配给JVM的内存越大,操作系统所能用于分配的内存就越小,于是所能开的线程数就越小。   大家有什么解决方案吗?难道大家都没遇过这个问题?我的设想是可能linux初始每个进程(也就是tomcat开的线程)有一个初始大小,这应该是一个内核参数来的,应该把它调小就可以了,但我不知道怎样去调。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表