服务器CPU占用过高,绝大多数情况下不是硬件老化,而是业务层代码逻辑问题、数据库慢查询、恶意攻击或异常进程这四类原因中的一种在作祟。下文按排查顺序拆解根因和对应解法。
拿到一台CPU跑满的服务器,先别急着重启
重启确实能短暂清零负载,但如果不定位根因,业务一上线又会打满,按下面顺序来,十分钟内能圈定大致方向。
第一步:用top命令锁定肇事进程
登录服务器后直接执行:
top -c
按下大写 P 让进程按CPU使用率排序,重点看最上面三行,如果某个进程的CPU占用长期稳定在 90%以上,且进程名很陌生,比如一串随机字符或者kworker变体,那大概率是中招了,如果进程名是php-fpm、java、python这类常见服务,说明是应用自身的问题。
进一步确认进程身份:
ls -l /proc/进程PID/exe cat /proc/进程PID/cmdline | tr '
