服务器突然变卡,网站打开半天,一看负载飙高,八成是内存或CPU被某个进程吃满了。小编排查过不少次,用top、htop一步步定位元凶,其实不难。这篇把服务器内存CPU占用高的排查思路讲清楚,别再一脸懵。
服务器资源被吃满就换台性能足够的云主机,这两家性能款值得看:OneTechCloud(云服务器)、CStoneCloud(云主机)。

先看整体:uptime和free
上手先看整体概况。uptime看负载(load average),三个数分别对应1/5/15分钟负载。free -h看内存,看用了多少、还剩多少、有没有Swap在大量顶。负载高+内存紧,先分清是内存还是CPU的锅,方向对了后面好查。

用top看进程排行
top是最常用的工具。输入top回车,默认按CPU占用排序,最上面就是吃CPU最狠的进程。想看内存占用排行按M,看CPU按P。关注%CPU和%MEM两列,谁占高就是嫌疑人。按q退出。top是排查CPU元凶的第一工具。

htop更直观更好用
觉得top丑,用htop,带颜色和进度条,更好认。htop顶上是CPU和内存的直观条,下面进程列表,可以用箭头选、F6排序,还能直接看进程树。对新手很友好。没有就先apt install htop装一个,排查效率高很多。

深入:内存泄漏和僵尸进程
有的进程内存一直涨降不下来,多半是内存泄漏。用ps aux --sort=-%mem按内存排,或反复看top里的进程内存变化。僵尸进程(状态Z)会占进程表不占CPU,多了也要处理。定位到具体进程,就知道是该重启、优化还是扩容了。

处理思路和提醒
找到元凶,对症处理:是程序写得烂、死循环就优化代码;是数据库慢查询吃资源就加索引;网站流量真大就换更高配置的云主机。别一卡就重启,不找根因下次还犯。有条件上监控告警,资源一飙就提醒,别等卡死才查。

总结:uptime/free看概况,top/htop按CPU或内存找进程,ps看内存泄漏和僵尸,定位元凶再对症处理,服务器内存CPU占用高就能查明白了。资源真不够,就升级到性能足够的云主机,一劳永逸。


喜欢
顶
难过
囧
围观
无聊



