tomcat+java的web程序持续占cpu问题调试

原文出处: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之类的循环代码片段。

时间: 2024-08-29 09:51:55

tomcat+java的web程序持续占cpu问题调试的相关文章

Java及Web程序调用hadoop2.6

1. hadoop集群: 1.1 系统及硬件配置: hadoop版本:2.6 :三台虚拟机:node101(192.168.0.101).node102(192.168.0.102).node103(192.168.0.103): 每台机器2G内存.1个CPU核: node101: NodeManager. NameNode.ResourceManager.DataNode: node102: NodeManager.DataNode .SecondaryNameNode.JobHistoryS

idea java 非web程序打包

以下打包非常暴力.O(∩_∩)O哈哈~ 第一步: 第二步:选择需要打包的文件 第三步:artifacts->jar->from modules with... 第四步:在<output root> 下建立 libs,并把第三方包加入 libs 文件夹中   这步是关键一步 第五步:运行打包      第六步:找到程序包执行命令:java -jar xxx.jar O(∩_∩)O哈哈~ 大功告成,准备下班... o(* ̄︶ ̄*)o 原文地址:https://www.cnblogs.c

Tomcat 插件启动 Web程序

Tomcat Embedded  开发人员无需搭建Tomcat的环境就可以使用内嵌式Tomcat进行开发,减少搭建J2EE容器环境的时间和开发时容器频繁启动所花时间,提高开发的效率 使用Maven创建项目需要添加一下几个包: <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-catalina</artifactId> <version>8.5.19

JavaWeb-06(Dom4j技术及Schema 约束、Tomcat与Web程序结构)

JavaWeb-06 JavaWeb-Dom4j技术及Schema 约束.Tomcat与Web程序结构 DOM4J及Schema 一.Dom4j解析(掌握) DOM4J解析XML文档 a. Dom4j是一个简单.灵活的开放源代码的库.Dom4j是由早期开发JDOM的人分离出来而后独立开发的.与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性. b. Dom4j是一个非常优秀的Java XML API,具有性能优异.功能强大和极

Web程序员开发App系列 - 开发我的第一个App,源码下载

Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 Web程序员开发App系列 - 开发我的第一个App 待续 目录 前言 源码和App下载 准备工作 查看留言页面 增加留言页面 前言 看了前面几篇文章后我们终于要开始敲代码了,由于所有前端代码都是Html静态问题,所以你用什么开发工具都可以,后台我采用MVC开发,因为Html静态文件需要打包,里面

javaweb回顾第二篇tomcat和web程序部署

前言这篇主要说下关于tomcat中一些属性和web程序的简单部署,可能在实际开发有更好的部署方式,但是这也是一个基础. 1:tomcat 关于tomcat估计只要接触java的人都听过这个名字,那我们都知道Servlet运行的话需要一个运行环境,也就是我们常说的Servlet容器,那么tomcat就是一个免费开源的Servlet容器.做过.net开发的应该知道IIS,其实tomcat和IIS一样都是具有处理HTMl页面的能力,当然也能处理Servlet和jsp. 下面是一个tomcat服务器接收

基础知识回顾第二篇tomcat和web程序部署

前言这篇主要说下关于tomcat中一些属性和web程序的简单部署,可能在实际开发有更好的部署方式,但是这也是一个基础. 1:tomcat 关于tomcat估计只要接触java的人都听过这个名字,那我们都知道Servlet运行的话需要一个运行环境,也就是我们常说的Servlet容器,那么tomcat就是一个免费开源的Servlet容器.做过.net开发的应该知道IIS,其实tomcat和IIS一样都是具有处理HTMl页面的能力,当然也能处理Servlet和jsp. 下面是一个tomcat服务器接收

JavaWeb-07(tomcat与web程序结构与Http协议与Servlet基础)

JavaWeb-07 JavaWeb-tomcat与web程序结构与Http协议与Servlet基础 HTTP协议(记住) 1.http协议:规定了客户端和服务端交流时的数据格式 a. WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议. b. HTTP是HyperText Transfer Protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式. c. HT

修改Tomcat默认web程序路径遇到的问题

线上前端是nginx反向到后边的两个tomcat的架构,在搭建tomcat的时候,由于自定义了tomcat的默认web数据存储路径,导致后来更新代码的时候出现了问题. 今天上线之后,由于程序有点儿问题,更改了一下,还没等重启tomcat服务,尼玛网站就打不开了,网站首页显示一个502的页面,手机立马收到了报警短信. 1).首先检查日志,查看这段儿时间的tomcat日志,报错如下: Sep 15, 2015 12:31:06 PM org.apache.catalina.loader.Webapp