您好,登錄后才能下訂單哦!
上周,我注意到一臺NLP服務器花費大量時間來完成分析請求,其中一個CPU核心長期占用率達到100%。對比剛上線的時候,各個服務的響應速度明顯要慢得多。
因此,使用了系統的top和第三方的htop分別做了篩查,最終定位到logrotate系統的日志分割服務出的問題。
以下記錄一下具體的處理辦法:
首先,執行下面的命令:
$ top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6479 root 20 0 413m 409m 860 R 99 40.9 927:36.64
/usr/sbin/logrotate /etc/logrotate.conf
$ tail /var/lib/logrotate/logrotate.status
//通過該狀態文件得知,里面存在大量tomcat的日志處理任務,由tomcat并沒有配置 自定義的日志 處理邏輯,由系統托管日志,且,tomcat的業務處理里非常大,因此,使用 logrotate需要處理的任務過多,造成CPU和磁盤非常忙。
$ ls /var/lib/logrotate/logrotate.status -lh
-rw-r--r-- 1 root root 66M Aug 24 08:18 /var/lib/logrotate/status
以上命令得到整個狀態文件居然高達156M,可怕!!
然后,來處理掉這個問題吧!
1) $ ps aux|grep logrotate // 找出 logr的進程號
2) $ kill -9 進程號 // 停止logr
3) $ /usr/local/tomcat/bin/shutdown.sh // 停止tomcat
4) $ rm -rf /usr/local/tomcat/logs // 清理tomcat下的日志文件[pid也可能被放置在這里,所以,我們先停止tomcat]
5) $ rm -f /var/lib/logrotate/logrotate.status //刪除logr的狀態日志文件太大的日志文件也會導致其使用100%CPU
6) $ logrotate -f /etc/logrotate.conf //重建立 狀態日志文件logrotate.status
7)重新啟動tomcat // 一切正常
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。