tomcat+java的web程序持续占cpu问题调试
2016-02-23 13:14
459 查看
原文出处:http://www.blogjava.net/hankchen
现象:
在tomcat中部署java的web应用程序,过一段时间后出现tomcat的java进程持续占用cpu高达100%,导致web程序访问受阻。
可能原因分析:
可能程序确实在进行数据计算;或程序进入死循环;
解决方法:
1、先用top查看占用cpu的进程id
2、再用ps -ef | grep PID定位具体的进程主体;如是否是tomcat启动的java程序
3、用ps -mp pid -o THREAD,tid,time打印出该进程下的线程占用cpu情况
找到了耗时最高的线程28802,占用CPU时间快两个小时了!
4、其次将需要的线程ID转换为16进制格式:
printf "%x\n" tid
5、最后打印线程的堆栈信息:jstack pid |grep tid -A 30
找到出现问题的代码,并分析具体函数中是否有可能出现死循环的代码段。
通常问题出现在while, for之类的循环代码片段。
现象:
在tomcat中部署java的web应用程序,过一段时间后出现tomcat的java进程持续占用cpu高达100%,导致web程序访问受阻。
可能原因分析:
可能程序确实在进行数据计算;或程序进入死循环;
解决方法:
1、先用top查看占用cpu的进程id
2、再用ps -ef | grep PID定位具体的进程主体;如是否是tomcat启动的java程序
3、用ps -mp pid -o THREAD,tid,time打印出该进程下的线程占用cpu情况
找到了耗时最高的线程28802,占用CPU时间快两个小时了!
4、其次将需要的线程ID转换为16进制格式:
printf "%x\n" tid
5、最后打印线程的堆栈信息:jstack pid |grep tid -A 30
找到出现问题的代码,并分析具体函数中是否有可能出现死循环的代码段。
通常问题出现在while, for之类的循环代码片段。
相关文章推荐
- Apache Tomcat配置虚拟主机的方法(不同域名绑定同一IP访问不同网站)
- Java后端WebSocket的Tomcat实现
- linux 下安装tomcat
- Myeclipse中web项目不能发布到tomcat的解决办法
- 启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099;
- tomcat 修改日志文件编码格式
- tomcat启动startup.bat一闪而过(分析与解答)
- tomcat批量升级
- web项目集成shiro后加入tomcat启动超时,tomcat无法正常启动
- nginx+tomcat集群配置(4)--rewrite规则和多应用根目录设定思路
- linux上tomcat输出中文
- Linux下Tomcat重新启动
- Jetty 的工作原理以及与 Tomcat 的比较
- [org.jaxen.util.AncestorAxisIterator->org.jaxen.ut
- Tomcat项目部署方式
- Tomcat集群配置学习篇-----分布式应用
- eclipse web项目缺少tomcat lib的解决
- Springsource tool suite(简称STS)(或Eclipse)将maven工程部署到Tomcat
- Tomcat环境下配置数据源
- URIEncoding与useBodyEncodingForURI 在tomcat中文乱码处理上的区别及CharacterEncodingFilter(备忘)