tomcat cpu暴涨的原因之一及其解决方法

11 篇文章 0 订阅

当你使用tomcat部署web系统时,过了一段时间发现cpu暴涨,你不防试试下面的方法,看看是否程序内的死循环导致cpu暴涨。

第一步:增加tomcat监控对外端口 

在你的tomcat的bin目录下找到catalina.sh在cygwin=false 上一行 

JAVA_OPTS="-server -Djava.security.egd=file:/dev/./urandom -Xms512m -Xmx2048m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=1024m -XX:-UseGCOverheadLimit

-Dcom.sun.management.jmxremote.port=2222  
-Dcom.sun.management.jmxremote.ssl=false  
-Dcom.sun.management.jmxremote.authenticate=false  
-Djava.rmi.server.hostname=127.0.0.1
-Dcom.sun.management.jmxremote=true 
-Djava.util.logging.mannager=org.apache.juli.ClassLoaderLogManager"

 

注意修改为自己的ip和端口 
-Dcom.sun.management.jmxremote.port=2222  //对外端口 (自定义)
-Djava.rmi.server.hostname=127.0.0.1//为本机IP(服务器IP) 

第三步:开启jvisualvm监控 

在你本机jdk的bin目录下找到jvisualvm.exe,例如我的目录为C:\Program Files (x86)\Java\jdk1.6.0_33\bin\jvisualvm.exe 
1.双击运行程序 
2.选择远程 
3.添加远程主机,如:127.0.0.1 
4.选择该主机 
5.添加JMX连接 

点击确定就行

因为-Dcom.sun.management.jmxremote.authenticate=false这里设置了false,所以不用输入用户名和口令

这里的用户名和口令不是服务器登陆的用户名和密码

 

双击该JMX连接 

点击线程查看线程运行情况,一般只有main和一些监听程序一直是运行状态(runnable), 
加入你有http-80- 类似的线程也一直处于运行状态,那就说明该执行该http请求有问题,甚至是死循环。 
如图: 

 

 

课外:tomcat优化一种方式在catalina.sh/bat添加这段:JAVA_OPTS="-server -Djava.security.egd=file:/dev/./urandom -Xms512m -Xmx1024m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=1024m  -XX:NewRatio=8 -XX:MaxTenuringThreshold=50 -XX:+DisableExplicitGC -XX:-UseGCOverheadLimit"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值