关于jboss的线程问题+java.lang.outofmemoryError

来源:互联网 发布:淘宝专业店铺装修 编辑:程序博客网 时间:2024/06/06 02:53
    近日来,用Jmeter做压力测试。发现,每台客户机使用800个线程组压力倍增。昨天的测试,到了今天下午都没有跑完。
仔细观察了下Jboss的错误日志,发现,jboss已经宕机了。

    本身后台的环境是使用LVS作的负载均衡。目前apache负载均衡器方面,已经没有什么问题了。修改的线程组达到1000。据资料显示,apache默认的线程数是60,最高能达到1000
在http.conf中,加入下面模块:

  1. <IfModule mpm_winnt.c>
  2. ThreadsPerChild 150
  3. MaxRequestsPerChild 1000
  4. Win32DisableAcceptEx    
  5. </IfModule>
根据 http://www.asymt.com/servers/windows/350.html 这篇文章所说,线程数超过170可能会导致内存不断的增加。这个没试过。我直接ThreadsPerChild 1000 MaxReqestPerChild 4000 暂时解决掉自己前面apache负载分配的压力。

后端的Jboss服务器线程数设置比较麻烦。

  1. <Connector port="80" address="${jboss.bind.address}"
  2.          maxThreads="250" maxHttpHeaderSize="8192"
  3.          emptySessionPath="true" protocol="HTTP/1.1"
  4.          enableLookups="false" redirectPort="443" acceptCount="100"
  5.          connectionTimeout="20000" disableUploadTimeout="true"
  6.          compression="on" compressionMinSize="10"
  7.          compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
  8.          />
这里面原始的maxThreads分配为250. 这个值最好设置成平时最大的并行线程数多25%.
acceptCount 是指超过maxThreads可接受的排队数目

修改以上两个线程数目后,继续测试.. 



测试发现,原本正常运行的测试计划。这次基本都跑死。控制台报出 java.lang.outMemoryError:java heap space错误。在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息。所以调整jvm的参数。

  1. set HEAP=-Xms1024m -Xmx1024m #堆内存池的大小值
  2. set NEW=-XX:NewSize=256m -XX:MaxNewSize=256m #新对象产生时,分配的内存。最好为最大对内存的四分之一
  3. set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50% #新对象内存比例
  4. set TENURING=-XX:MaxTenuringThreshold=2
  5. set RMIGC=-Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000
  6. set PERM=-XX:PermSize=64m -XX:MaxPermSize=64m
调整适合的内存参数。


阅读(92) | 评论(1) | 转发(0) |
0

上一篇:Apache实现反向代理负载均衡

下一篇:整理LVS架构压力测试工作

相关热门文章
  • java.lang.OutOfMemoryError: ...
  • java多线程设计模式-Thread-Sp...
  • 错误提示--解决方法:请使用支...
  • Java程序员从笨鸟到菜鸟之(十...
  • JAVA 多线程
  • IP Sec VPN与NAT破镜重圆
  • 网站导航
  • UT2.0正式版下载
  • GoAgent图文设置教程
  • tomcat6.0配置(含配置视频下载...
  • 【趣味题】 发疯的机器人...
  • 如何安装java环境和tomcat(ub...
  • GFS与mfs的区别?
  • 以下的问题合理么?求指导...
  • 要生成10位的永不重复的字母加...
给主人留下些什么吧!~~

exhalo2013-05-15 14:02:21

测试发现,是脚本录制的问题。中间有太多不必要的请求,以至于堆溢出。所以录制脚本的时候一定要检查好,每个请求的内容

回复 | 举报
评论热议
原创粉丝点击