我正在使用jmeter对我的应用程序进行负载测试,我的情况是应用程序jvm的cpu使用率达到99%并且它保持不变。应用程序仍然有效,我可以登录并做一些活动。但是,它可以理解地慢了。
环境细节:
服务器:AMD Optrom,2.20 Ghz,8 Core,64位,24 GB RAM。 Windows Server 2008 R2标准版
应用程序服务器:jboss-4.0.4.GA
JAVA:jdk1.6.0_25,Java HotSpot(TM)64位服务器VM
JVM设置: -Xms1G -Xmx10G -XX:MaxNewSize = 3G -XX:MaxPermSize = 12G -XX:+ UseConcMarkSweepGC -XX:+ UseParNewGC -XX:+ UseCompressedOops -Dsun.rmi.dgc.client.gcInterval = 1800000 -Dsun.rmi.dgc。 server.gcInterval = 1800000
数据库:MySql 5.6(在不同的机器中)
Jmeter:2.13
我的情况是,我让我的应用程序的20个用户登录并执行不应带来巨大负载的正常活动。一些,进入过程的几分钟,Jboss的JVM上升,它永远不会回来。在JVM被杀死之前,CPU使用率将保持不变。
为了更好地理解,这里有几个屏幕截图。
我发现很少有帖子有100%的杯子,但没有什么和我的情况一样,找不到解决方案。 任何关于要做什么的建议都会很棒。
此致
斯里卡特。
答案 0 :(得分:0)
要了解高CPU利用率的根本原因,我们需要同时检查CPU数据和线程转储。
在问题发生时捕获5-6个线程转储。类似地,逐线程地捕获CPU消耗。
通常,CPU问题的根本原因是线程问题,如BLOCKED线程,长时间运行的线程,死锁,长时间运行的循环等。这可以通过遍历线程的堆栈来解决。