在日常运维过程中,经常碰到的问题,就是cpu使用率高达100%,那遇到这个问题时,需要怎么去解决呢,不知道方法的小伙伴,就会感觉一筹莫展。如果知道方法,一步一步的去排查,很容易就能解决linux系统CPU资源耗尽的故障。
首先我们要定位到底什么原因导致cpu使用率超标,先定位看看是什么进程消耗掉了cpu资源。
第一步可以使用ps命令查看一下
ps aux|sort -n -k4|tail -20
上述命令可以查看消耗cpu资源最多的20个进程,不过是逆序的,这样能定位出是什么进程引起的CPU资源耗尽。
喜欢top的同学,也可以用top进行查看,top工具使用也是很方便,这里就简单介绍一下top的使用
top进入top界面之后,使用shift+p就可以按cpu进行排序
top进入top界面之后,使用shift+m就可以按内存进行排序
到这里基本就可以定位到是什么进程占用了cpu资源,如果是MySQL进程消耗大量的cpu资源,该怎么去定位呢。
数据库占用CPU资源,90%以上情况是因为慢sql导致,原理也很简单,因为慢sql会导致全表扫描,扫描数据量太大,内存排序,磁盘排序,锁争用等。那怎么去排查呢,使用下面命令
show full processlist
查看到有sending data,copying to tmp table,copying to tmp table on disk,sorting result,using filesort,locked有这种状态的sql语句基本都是元凶了,杀掉这些慢sql查询就能解决问题,当然还得联系开发对相关程序进行优化处理。