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中
相关文章
|
5月前
|
运维 监控 网络协议
JAVA 线上故障排查完整套路,从 CPU、磁盘、内存、网络、GC
JAVA 线上故障排查完整套路,从 CPU、磁盘、内存、网络、GC
264 0
|
2月前
|
小程序 JavaScript Java
【Java】服务CPU占用率100%,教你用jstack排查定位
本文详细讲解如何使用jstack排查定位CPU高占用问题。首先介绍jstack的基本概念:它是诊断Java应用程序线程问题的工具,能生成线程堆栈快照,帮助找出程序中的瓶颈。接着,文章通过具体步骤演示如何使用`top`命令找到高CPU占用的Java进程及线程,再结合`jstack`命令获取堆栈信息并进行分析,最终定位问题代码。
129 1
【Java】服务CPU占用率100%,教你用jstack排查定位
|
2月前
|
存储 Java API
【Azure Developer】通过Azure提供的Azue Java JDK 查询虚拟机的CPU使用率和内存使用率
【Azure Developer】通过Azure提供的Azue Java JDK 查询虚拟机的CPU使用率和内存使用率
|
3月前
|
监控 算法 Java
|
3月前
|
Java
Jstack 查看线程状态及定位占用 cpu 较高的 java 线程
Jstack 查看线程状态及定位占用 cpu 较高的 java 线程
203 2
|
3月前
|
监控 算法 Java
压测分析Java内存和CPU暂用
7月更文挑战第7天
46 5
|
3月前
|
Java
手把手教你java CPU飙升300%如何优化
手把手教你java CPU飙升300%如何优化
49 0
|
4月前
|
监控 Java API
使用Java检测当前CPU负载状态的技术博客
使用Java检测当前CPU负载状态的技术博客
67 0
|
5月前
|
Java Linux
Linux下如何定位最耗CPU的JAVA代码
Linux下如何定位最耗CPU的JAVA代码
73 0
|
5月前
|
Java Shell
java中jvm使用jststak定位线程cpu占用内存高的线程
java中jvm使用jststak定位线程cpu占用内存高的线程
47 5
下一篇
无影云桌面