没有实际案例的jvm调优都空谈。
代码语言:txt复制好了,他来了~
代码语言:txt复制昨天下班时间,监控中心报警,内存使用率达到97%,CPU使用率达到1100%,你没有看错,就是1100%,空闲内存168M。
那么MySQL突然飙升,首先查询当下主库内正在运行的线程以及是否有占用资源的SQL。然后执行分析info语句,看此次SQL是否是新发版功能引起,如果是新功能引起,立即回滚。
代码语言:javascript复制-- 查询非 Sleep 状态的链接,按消耗时间倒序展示,自己加条件过滤
select id, db, user, host, command, time, state, info
from information_schema.processlist
where command != 'Sleep'
order by time desc
其次查看CAT,但是CAT中除了Heartbeat报表GC异常以外,只有一条一分钟的SQL,并没有其他超时SQL
然后查看Grafana可以看到飙升时间在7点18分
在这个时间段查询PMM
没有异常,但是在其他服务中查询到有长达10分钟SQL未返回。
运行show full processlist命令查看是否有线程递增的情况
查询发现每一秒都有一个SQL在查询,经过代码分析,是某个接口前端轮询调用每秒都在进行查询导致的,没想到一个查询频率超高的SQL能导致CPU超高