`

Java项目服务器cpu占用100%解决办法

阅读更多

       项目上线后运行一段时间,突然发现cpu 8个逻辑核心都占用100%,心情很紧张,然后就在网上找了一些解决方法,具体如下:
       1.查找哪些进程在耗cpu 
       进入服务器,top 命令看一下,发现进程6633占用了800% 
       [root@3server ~]# top
       2.把进程的栈dump到文件里,以便后面的分析
       [root@3server ~]# jstack 6633 > cpu1128.log
       3.看看这个进程里面哪些线程在占用cpu 
       [root@3server ~]# top -p 6633 -H
       一大片占用cpu很高的线程,选一个最高的吧,PID=5159
       4.接着要看刚才dump出来的cpu日志了,里面会有6633这个进程下面每个线程的栈信息,但是是十六进制显示的,所以先把5159转换成16进制 
       [root@3server ~]# printf %0x 5159
       [root@3server ~]# 1427
       5.在cpu日志里找PID=1427的线程 

       [root@3server ~]# vi cpu1128.log

   cpu1128.log         6.分析原因
            看日志,很明显是org.hibernate.exception.ExceptionUtils.getCauseUsingWellKnowTypes(...)这里出问题。这个线程是"RUNABLE"状态的,难道在这里发生了死循环?后来花了很多时间在debug状态下把这个问题重现了(Hibernate 3.3.1.GA版本,通过hessian调用远程服务器报SQLGrammarException异常,就会出现这个问题)。跟踪到hibernate源码里发现了问题:

             

public static int getThrowableCount(Throwable throwable) {
		int count = 0;
		while ( throwable != null ) {
			count++;
			throwable = ExceptionUtils.getCause( throwable );
		}
		return count;
}

         这个方法里,throwable和它的cause引用的同一个SQLGrammarException对象,导致在while这里产生了死循环。这肯定是hibernate的bug了。于是把hibernate升级到3.3.2.GA(原来是3.3.1.GA,不敢升太多)问题解决。 

  • 大小: 285.8 KB
分享到:
评论
2 楼 锦毛鼠 2015-01-21  
超哥V587
1 楼 iloveuwxj 2015-01-21  
   

相关推荐

    linux服务器找到占用cpu高的java代码的办法

    linux服务器找到占用cpu高的java代码的办法

    使用dotnet-dump 查找 .net core 3.0 占用CPU 100%的原因解析

    公司的产品一直紧跟 .net core 3.0 preview 不断升级, 部署到 Linux 服务器后, 偶尔会出现某个进程CPU占用100%.  由于服务部署在云上, 不能使用远程调试; 在局域网内的Linux 服务器 或 Windows开发机上又不能重现这...

    LINUX类主机JAVA应用程序占用CPU、内存过高分析手段

    当用户量过大,或服务器性能不足以支持大用户量,但同时又得不到扩容的情况下,进行性能分析,并对系统、应用、程序进行优化显得尤为重要,也是节省资源的一种必不可少的手段。目前大多数运维产品都基于JAVA语言开发...

    LF-Spy(Java服务器探针)

    <br>LF-Spy能够自动测试目标Java服务器的网络连接速度、MAC地址、服务器硬盘剩余空间、服务器运算能力、服务器的内存资源损耗、cpu占用率、硬盘大小、页面执行时间等参数。并提供服务器基本信息,服务器组件支持...

    Java服务器问题排查思路及工具集.zip

    Java服务器问题排查思路及工具集.zip linux工具集 java工具集 cpu占用率高如何解决 内存占用率高如何解决 OOM(out of memory)如何解决

    Java实现对系统CPU、内存占用率的控制

    背景:由于使用的业主的云资源,由于使用率低,会不持续的缩减服务器配置。...问题:怎样通过Java程序实现CPU、内存占用超过50%? 方案:详见我的博客:https://blog.csdn.net/taotao_guiwang?spm=1010.2135.3001.5343

    Alex-Word-Filter-MFC网络版java客户端(多线程连接池版)

    Alex-Word-Filter-MFC网络版java客户端,由北京师范大学计算机学系2000级Alex.Zhang开发,能够过滤纯文本敏感词、标点符号分割敏感词、html敏感词。...java服务器版请下载alex-word-filter敏感词过滤jar包。

    通过snmp的OID获取对方主机的内存利用率及CPU的使用率

    通过snmp的OID获取对方主机的内存利用率及CPU的使用率

    jvm排查cpu占用过高的线程

    cpu占用过高,服务器卡死,问题排查 java进程占用CPU过高常见的两种情况: 代码中有死循环或者接近死循环的操作 快速创建大量临时变量,导致频繁触发gc回收 问题解决: 1、用top命令找到cpu占用率最高的进程号是...

    Java聊天室程序源码(毕业设计)

    ChatRoom.java 为客户端程序聊天室主界面,负责接收、发送聊天内容与服务器端的Connection.java 亲密合作。 Windowclose 为ChatRoom.java的内部类,负责监听聊天室界面的操作,当用户退出时返回给服务器信息。 Clock...

    java_remotecontrol.zip_java 远程桌面_remote_remotecontrol_服务器_远程控制

    手把手教你做java远程控制 Remote Control Pro 是一个功能强大的网络远程管理工具,程序可以远处连接网络服务器,在本机显示服务器的程序运行桌面,你可以在本机操作远程服务器...程序执行效率高,安全可靠,CPU资源占用小!

    Apache FtpServer 1.0.6

    设置一个大范围的passive端口,将花费1分钟和100%的CPU占用率; Possible null pointer dereference of passivePorts in PassivePorts::; OPTS MLST不能正确处理字符的大小写; 在distribution/res/ftp-db.sql文件...

    linux查看cpu是否支持64位的方法

    查看cpuinfo中是否有lm,如果有lm表示支持64位,lm的意思是long mode,... 您可能感兴趣的文章:linux php-cgi.exe占用cpu 100%的一次排障之旅Linux shell脚本实现CPU预警Linux中使用Shell脚本查看Java线程的CPU使用情况

    show-busy-java-threads

    上传到 linux线上服务器,执行 chmod -R 777 show-busy-java-threads 执行权限。 ./show-busy-java-threads 查看执行占用cpu偏高的 线程,方便我们排查定位。

    kiwi_java_toolbox

    本工具用于定位内存泄漏、CPU占用过高等问题。功能说明一键式收集Java进程的问题定位信息,包括:Thread Stack和Heap Dump等。监控Java进程使用的CPU,当占用率过高时,自动收集Top信息和Thread Stack。启动、停止、...

    JAVA性能瓶颈和漏洞检测

    计算运行时间或CPU时间占用:跟踪用户体验或计算瓶颈; 9种指标:多角度确定问题根源; 高级过滤和触发器:确定要诊断分析的关键代码区域; 快照对比技术:预测代码修改对性能的影响; 高级打印和输出功能:支持...

    java模拟木马程序

    b 查看系统内存 磁盘空间 cpu占用率 系统版本等信息 c 检测是否可以上网 d 打开系统某一个端口,访问intenet 某一个ip 发送信息上传文件请求,将接收服务器的指令,并执行,生成txt文件,上传到服务器 。。。

    dearxuany#Sharon_Technology_learning_note#java 进程内存使用率高 jmap 排查方

    jmap 排查 java 进程内存使用率高步骤glances 找出服务器中 CPU 占用率高的进程临时修改程序用户的 shell 为可登录用户并切换到该用户注意

    百度地图开发java源码-k8s:k8s

    在部署时,需要人工创建相应的服务器及资源,并搭建项目运行的依赖环境,预估服务需要占用的内存与CPU,同事还要考虑到高可用的部署环境,在不同配置的服务器上部署相应的服务。当服务意外崩溃或者服务器意外宕机时...

Global site tag (gtag.js) - Google Analytics