在日常運維過程中,經(jīng)常碰到的問題,就是cpu使用率高達100%,那遇到這個問題時,需要怎么去解決呢,不知道方法的小伙伴,就會感覺一籌莫展。如果知道方法,一步一步的去排查,很容易就能解決linux系統(tǒng)CPU資源耗盡的故障。
首先我們要定位到底什么原因導致cpu使用率超標,先定位看看是什么進程消耗掉了cpu資源。
第一步可以使用ps命令查看一下
ps aux|sort -n -k4|tail -20
上述命令可以查看消耗cpu資源最多的20個進程,不過是逆序的,這樣能定位出是什么進程引起的CPU資源耗盡。
喜歡top的同學,也可以用top進行查看,top工具使用也是很方便,這里就簡單介紹一下top的使用
在top里按cpu使用率排序
top進入top界面之后,使用shift+p就可以按cpu進行排序
在top里按內(nèi)存使用率排序
top進入top界面之后,使用shift+m就可以按內(nèi)存進行排序
到這里基本就可以定位到是什么進程占用了cpu資源,如果是MySQL進程消耗大量的cpu資源,該怎么去定位呢。
數(shù)據(jù)庫占用CPU資源,90%以上情況是因為慢sql導致,原理也很簡單,因為慢sql會導致全表掃描,掃描數(shù)據(jù)量太大,內(nèi)存排序,磁盤排序,鎖爭用等。那怎么去排查呢,使用下面命令
show full processlist
查看到有sending data,copying to tmp table,copying to tmp table on disk,sorting result,using filesort,locked有這種狀態(tài)的sql語句基本都是元兇了,殺掉這些慢sql查詢就能解決問題,當然還得聯(lián)系開發(fā)對相關程序進行優(yōu)化處理。