一次CPU占用过高事件的胡乱解决

1.起因

之前组里做了一个基于drools的业务逻辑校验程序,使用的是java语言。因为工作后一直就用C#,但是学校里教的都是java,用上了很久没用的java还是挺高兴的。做完,测试完,放到线上,回家。

我们的服务设定是每天早上5点定时跑的,到了第二天早上,手机就接到Zabbix的报警短信,我们的那台跑检验程序的机器CPU占用率超过80%,虽然我们之前Drools规则系统已经加入了很多业务,但是CPU占用过高这事从来没发生过,这锅看来必须自己背了。
这里写图片描述

2.定位问题

到了公司,赶紧看看出了什么问题。重新启动程序,发现CPU占用率在10-70之间波动。查看日志可以发现CPU占用率高的时候代码正在查询Sql Server数据库。

我们数据库访问用到了iBatis,第一感觉是iBatis开了多线程消耗CPU,但是观察程序运行时的线程数并没有增多太多。想着用最新版本是不是可以解决,于是更新了iBatis库的版本。。。然而CPU占用率还是很高。

为了确定是不是Sql语句本身导致的CPU占用,我在Sql Server客户端里面试着运行了下程序的Sql语句,发现CPU占用就没超过20%过。。。

然后用JDBC执行了下访问数据库的语句,发现CPU占用根本不高,而且程序速度也变快了很多。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值