LHIDC

Linux 服务器突然变慢,应该先看哪些指标

Linux 服务器突然变慢时,不要先猜是程序还是网络。先看 CPU、内存、Load、磁盘 IO 和最近变更,往往能更快锁定是短时流量、任务堆积还是资源瓶颈。

服务器“突然变慢”通常不是一个点坏了,而是某个资源开始被打满了。用户最容易犯的错,是一感觉慢就重启,结果速度是恢复了,但真正的原因被抹掉了。比起立刻修复,先判断“慢在哪一层”更重要。

有些慢是程序慢,比如接口计算重、数据库慢查询;有些慢是系统慢,比如磁盘 IO 飙高、内存交换、Load 堆积;还有些慢是网络慢,比如某个地区访问不稳、线路绕路、DNS 异常。看清这三类,很多排查就不会走偏。

先看四个地方

top
free -h
uptime
iostat -x 1 3

`top` 用来看 CPU 和最忙的进程,`free -h` 看内存和 Swap,`uptime` 看 Load,`iostat` 看磁盘 IO。不要只盯一个图表,几个指标放在一起看,才能知道是“算得慢”还是“等得慢”。

一个简单判断表

现象更像什么问题进一步看什么
CPU 高、Load 高计算压力或异常进程高 CPU 进程、Web 日志
CPU 不高、Load 高IO 等待或进程排队`wa`、磁盘、数据库
内存低、Swap 高内存压力`free -h`、高内存进程
某接口慢、别的正常程序或数据库局部瓶颈应用日志、慢查询
只某个地区慢路由或线路问题traceroute、多地测试

先看最近有没有变更

很多“突然变慢”其实发生在改配置之后,比如升级 PHP、切换数据库版本、加了反向代理、改了防火墙、加了 cron 任务。先想一想:昨天和今天有什么不一样?

如果刚部署了新版本,重点看:

tail -n 100 /var/log/nginx/error.log
tail -n 100 /var/log/php-fpm/error.log

如果是数据库慢,可以先看慢查询,尤其是原来几百毫秒的接口突然变成几秒。

不建议先做的事

不要先重启整机。不要看到慢就直接加大 CPU。不要把所有慢都归为“网络问题”。真正的瓶颈不同,处理方式也不同。

用户和服务商边界

如果你已经能定位到是某个进程、某个接口或者某个数据库语句慢,通常可以继续在应用层处理;如果是多地访问都慢,或者宿主机 IO、CPU steal、网络波动明显异常,则需要服务商协助确认底层资源。

上一篇 Linux Load Average 很高代表什么?和 CPU 占用有什么区别 下一篇 香港服务器怎么选?先看线路、带宽还是机房位置

LHIDC 产品中心

继续查看可购买的海外服务器产品

文章用于辅助选型,最终价格、库存与配置请以产品详情页和下单页面展示为准。

查看产品 查看方案