java几乎耗尽了所有的CPU

现象如下:

刚启动后,java几乎耗尽了所有的CPU,压力大嘛。

几分钟后,CPU 100% idle, tomcat也不接受任何请求了,感觉就是tomcat死了。

ps -efL | grep java | wc -l 可以发现tomcat的线程池满了,每个线程都在,就是不工作了。

难道tomcat有bug? 在高压力的情况下工作不正常?

google后发现,有这种问题还不在少数,具体原因也不尽相同,但根本的原因就一个“线程发生了死锁”。 这就好理解了,所有的线程都在等待某种资源,所以也就idle了。

如何知道每个线程都在等待什么呢?

1、 ps -ef | grep java

      得到java的pid

2、kill -QUIT "得到的pid"

      这个命令给java发送了一个信号,tomcat会把每个线程的情况写在tomcat的日志文件catalina.out中

时间: 2024-10-01 06:22:14

java几乎耗尽了所有的CPU的相关文章

cpu-怎么用java获取非本机的CPU使用率和硬盘占有率?求大神指点!在线等!

问题描述 怎么用java获取非本机的CPU使用率和硬盘占有率?求大神指点!在线等! 可以获取本电脑的CPU使用率,不过获取他人的电脑的CPU使用率呢? 解决方案 这个一般是通过SNMP,WMI等方式,需要远程电脑上有安装对应的服务等 解决方案二: 请问需要安装什么服务?用java代码可以实现对非本机的CPU使用率的获取吗?谢谢啦!

Windows平台下tomcat+java的web程序持续占cpu问题调试

1.问题 Tomcat服务器跑了一段时间后,发现Tomcat进程占用的CPU资源在80%-100%间,加上其它的进程,整个服务器的CPU处理100%运行状态. 2.通过process explorer查看Tomcat进程下的线程 process explorer下载:https://technet.microsoft.com/en-us/sysinternals/bb896653/ 我使用的是汉化后的版本:http://download.csdn.net/detail/p_3er/9169985

【Java深入学习系列】之CPU的分支预测(Branch Prediction)模型

说明: 本文以stackoverflow上Why is it faster to process a sorted array than an unsorted array?为原型,翻译了问题和投票高的回答,并加入了大量补充说明,方便读者理解. 背景 先来看段c++代码,我们用256的模数随机填充一个固定大小的大数组,然后对数组的一半元素求和: #include <algorithm> #include <ctime> #include <iostream> int m

java中如何获取系统信息如cpu主频和cpu利用率

问题描述 实验室里的一个基于服务计算的863课题为了让个计算资源均衡,要知道各个机器的配置情况可当前资源利用率,主要是cpu主频.占用率:内存大小.可用内存大小.项目使用的是j2ee,但是由于java是在虚拟机上运行的缘故,这些和系统相关的信息可能无法直接获得,例Runtime.totalMemory()和Runtime.freeMemery()返回的仅是关于虚拟机的内存信息.请问高手:1.Java中是否提供了相关的api?2.若否,是不是可以利用JNI提供的和c相关的接口,间接地用c去获取相关

java获得路由器、交换机的CPU/内存使用率

问题描述 我想做个软件,运行时可以获取到路由器.交换机的CPU和内存使用率,有思科也有华为的设备.我在网上看到很多人说用SNMP4J.MIB/OID来做但是看到大部分举例代码和介绍都是获取服务器和系统的运行数据,并没有路由器和交换机的.想问各位高手:获取服务器和路由器的原理是否一样,甚至说运行代码也都类似,只是OID的区别?如果不一样的话,有谁做过类似项目的,能不能指导一下我. 解决方案 解决方案二:snmp协议解决方案三:引用1楼zn85600301的回复: snmp协议 我下了SNMP4J,

我的JAVA SRC原代码占率CPU过大...可能经常出现死循环...我出钱请高手帮我解决问题..

问题描述 如果有诚意修复的高手,,请加我QQ15001594.或者留下QQ.带原始代码..的SRC..我是用NetBeansIDE6.5编译的. 解决方案 解决方案二:项目不大的话,可以发上来大家看看,不用钱的.

从Java视角理解系统结构(二)CPU缓存

从Java视角理解系统结构连载, 关注我的微博(链接)了解最新动态 众所周知, CPU是计算机的大脑, 它负责执行程序的指令; 内存负责存数据, 包括程序自身数据. 同样大家都知道, 内存比CPU慢很多. 其实在30年前, CPU的频率和内存总线的频率在同一个级别, 访问内存只比访问CPU寄存器慢一点儿. 由于内存的发展都到技术及成本的限制, 现在获取内存中的一条数据大概需要200多个CPU周期(CPU cycles), 而CPU寄存器一般情况下1个CPU周期就够了. CPU缓存 网页浏览器为了

Java程序员也应该知道的系统知识系列之CPU

作者:林昊 去年在排查很多java应用的问题时候,看到一些现象是程序员对自己写完的程序所运行的环境了解很少,导致排查问题的时候会比较折腾,因此想到了写这个系列的文章,程序要提供功能给最终用户使用,代码只是其中的一个部分,它还需要依赖jvm.os.服务器硬件.网络.负载均衡等等来共同完成,在这个系列的文章中,将重点关注除jvm外的几个部分,更多的也只是一个科普作用,由于os我使用的都是linux,这个系列的文章中讲到的os也都默认就是linux,这是这个系列的第一篇:CPU.   Java程序在运

Java程序员熟练掌握的系统知识之CPU

去年在排查很多java应用的问题时候,看到一些现象是程序员对自己写完的程序所运行的环境了解很少,导致排查问题的时候会比较折腾,因此想到了写这个系列的文章,程序要提供功能给最终用户使用,代码只是其中的一个部分,它还需要依赖jvm.os.服务器硬件.网络.负载均衡等等来共同完成,在这个系列的文章中,将重点关注除jvm外的几个部分,更多的也只是一个科普作用,由于os我使用的都是linux,这个系列的文章中讲到的os也都默认就是linux,这是这个系列的第一篇:CPU. Java程序在运行时和CPU的关