关于jboss的线程问题+java.lang.outofmemoryError
近日来,用Jmeter做压力测试。发现,每台客户机使用800个线程组压力倍增。昨天的测试,到了今天下午都没有跑完。
仔细观察了下Jboss的错误日志,发现,jboss已经宕机了。
本身后台的环境是使用LVS作的负载均衡。目前apache负载均衡器方面,已经没有什么问题了。修改的线程组达到1000。据资料显示,apache默认的线程数是60,最高能达到1000
在http.conf中,加入下面模块:
- <IfModule mpm_winnt.c>
- ThreadsPerChild 150
- MaxRequestsPerChild 1000
- Win32DisableAcceptEx
- </IfModule>
根据 http://www.asymt.com/servers/windows/350.html 这篇文章所说,线程数超过170可能会导致内存不断的增加。这个没试过。我直接ThreadsPerChild 1000 MaxReqestPerChild 4000 暂时解决掉自己前面apache负载分配的压力。
后端的Jboss服务器线程数设置比较麻烦。
- <Connector port="80" address="${jboss.bind.address}"
- maxThreads="250" maxHttpHeaderSize="8192"
- emptySessionPath="true" protocol="HTTP/1.1"
- enableLookups="false" redirectPort="443" acceptCount="100"
- connectionTimeout="20000" disableUploadTimeout="true"
- compression="on" compressionMinSize="10"
- compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
- />
这里面原始的maxThreads分配为250. 这个值最好设置成平时最大的并行线程数多25%.
acceptCount 是指超过maxThreads可接受的排队数目
修改以上两个线程数目后,继续测试..
测试发现,原本正常运行的测试计划。这次基本都跑死。控制台报出 java.lang.outMemoryError:java heap space错误。在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息。所以调整jvm的参数。
- set HEAP=-Xms1024m -Xmx1024m #堆内存池的大小值
- set NEW=-XX:NewSize=256m -XX:MaxNewSize=256m #新对象产生时,分配的内存。最好为最大对内存的四分之一
- set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50% #新对象内存比例
- set TENURING=-XX:MaxTenuringThreshold=2
- set RMIGC=-Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000
- set PERM=-XX:PermSize=64m -XX:MaxPermSize=64m
调整适合的内存参数。
关于jboss的线程问题+java.lang.outofmemoryError的更多相关文章
- JVM内存越多,能创建的线程越少,越容易发生java.lang.OutOfMemoryError: unable to create new native thread。
一.认识问题: 首先我们通过下面这个 测试程序 来认识这个问题:运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows XP,Sun JDK 1.6.0_18, eclipse ...
- 在Eclipse中运行Jboss时出现java.lang.OutOfMemoryError:PermGen space及其解决方法
在Eclipse中运行Jboss时出现java.lang.OutOfMemoryError:PermGen space及其解决方法 在Eclipse中运行Jboss时,时间太长可能有时候会出现java ...
- 剥下“java.lang.OutOfMemoryError: unable to create new native thread”的外衣 创建线程数公式(MaxProcessMemory - JVMMemory – ReservedOsMemory)
剥下“java.lang.OutOfMemoryError: unable to create new native thread”的外衣 星期一早上到了公司,据称产品环境抛出了最可爱的异常—OutO ...
- eclipse:Tomcat设置jvm,解决java.lang.OutOfMemoryError: Java heap space 堆内存溢出
eclipse 有启动参数里设置jvm大小,因为eclipse运行时自己也需要jvm,所以eclipse.ini里设置的jvm大小不是具体某个程序运行时所用jvm的大小,这和具体程序运行的jvm大小无 ...
- Web项目java.lang.OutOfMemoryError: PermGen space异常解决
接手一个新的Web项目,编译运行(Tomcat版本为7),运行的时候报出了java.lang.OutOfMemoryError: PermGen space的异常,搜了一下这样解释: PermGe ...
- java.lang.OutOfMemoryError: PermGen space及其解决方法
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决 ...
- java.lang.OutOfMemoryError: bitmap size exceeds VM budget解决方法
1 BitmapFactory.decodeFile(imageFile); 用BitmapFactory解码一张图片时,有时会遇到该错误.这往往是由于图片过大造成的.要想正常使用,则需要分配更少的内 ...
- 应用jacob组件造成的内存溢出解决方案(java.lang.OutOfMemoryError: Java heap space)
http://www.educity.cn/wenda/351088.html 使用jacob组件造成的内存溢出解决方案(java.lang.OutOfMemoryError: Java heap s ...
- java.lang.OutOfMemoryError处理错误
内存详解 原因: 常见的有以下几种: 1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据: 2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收: 3.代码中存在死循环或循环产生过多 ...
随机推荐
- VMWARE 虚拟机新增硬盘,格式化分区,并挂载
VMWARE 虚拟机新增 硬盘 并挂载 一台虚拟机上安装ORACLE12c 需要分一块硬盘挂载数据文件 日志文件 以及归档文件 1. 关闭虚拟机 2. 编辑虚拟机设置 选择[编辑虚拟机设置]并打开,将 ...
- 关于项目报错Dynamic Web Module 3.0 requires Java 1.6 or newer 的解决方法
起因:今天使用maven创建web项目的时候发现项目上老是有个红X,错误如下图所示,虽然项目能正常运行起来,但是LZ的强迫症发作,不弄掉就觉得心里不舒服,于是上网查了攻略,几经周折最终大功告成,现在就 ...
- OSCache-JSP页面缓存(1)
一.OSCache提供的缓存标签 这是OSCache提供的标签库中最重要的一个标签,包括在标签中的内容将应用缓存机制进行处理,处理的方式将取决于编程者对cache标签属性的设置. 第一次请求到达时,标 ...
- ora-28547:连接服务器失败,可能是 Oracle Net 管理失败
检查如下: 监听程序的配置文件 发现多了 (PROGRAM = extproc) 去掉后如下: # listener.ora Network Configuration \dbhome_1\netwo ...
- 使用Nuget发布自己的类库包
NuGet是一个为大家所熟知的Visual Studio扩展,通过这个扩展,开发人员可以非常方便地在Visual Studio中安装或更新项目中所需要的第三方组件,同时也可以通过NuGet来安装一些V ...
- 6.AND & OR 运算符
AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤 AND 和 OR 运算符 AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来. 如果第一个条件和第二个条件都成立,则 A ...
- Luogu 2403 [SDOI2010]所驼门王的宝藏
BZOJ 1924 内存要算准,我MLE了两次. 建立$n + r + c$个点,对于一个点$i$的坐标为$(x, y)$,连边$(n + x, i)$和$(n + r + y, i)$,代表这一列和 ...
- [存储过程]中的事务(rollback)回滚
在编写SQL Server 事务相关的存储过程代码时,经常看到下面这样的写法: begin tran update statement 1 ... update statement 2 ... del ...
- Visual Studio OpenCV 开发环境配置
因为VS配置OpenCV好多新手都很难一次配置成功,而且OpenCV库每新建一个项目都要配置很是麻烦,所以今天就给大家介绍一个“一劳永逸”的方法. 注:理论上只要VS和OpenCV是版本兼容的,该方法 ...
- App测试从入门到精通之App分类和场景操作系统
App概要 APP是application的缩写.通常指的是手机软件上的应用,或称为手机客户端.手机app就是手机的应用程序.随着智能手机的越发普及,用户越发依赖手机软件商品店,app开发的需求与发展 ...