现象或背景
在日常运维和性能优化中,我们经常需要排查线上服务的性能瓶颈。然而,由于缺乏一套统一的排查清单,每次排查都需要从零开始,效率低下。为了提高排查效率,本文整理了一份 Linux 生产环境性能瓶颈排查 Checklist,覆盖 CPU、内存、磁盘 IO 和网络四类问题,帮助快速定位性能瓶颈。
原理或根因分析
性能瓶颈通常由资源争用或使用不当引起。CPU 瓶颈可能由过多的上下文切换或高 CPU 使用率导致;内存瓶颈可能由内存泄漏或频繁的页面交换引起;磁盘 IO 瓶颈通常由高磁盘使用率或 I/O 阻塞导致;网络瓶颈可能由高网络延迟或带宽不足引起。通过逐一排查这些指标,可以快速定位问题的根源。
具体做法
CPU
-
查看 CPU 使用率:
top -H -p <pid>- 判定阈值:
%CPU > 90% 持续 1 分钟。 - 说明:高 CPU 使用率可能由 CPU 密集型任务或频繁的上下文切换引起。
- 判定阈值:
-
查看 CPU 上下文切换:
vmstat 1 5- 判定阈值:
in > 10000。 - 说明:频繁的上下文切换可能导致 CPU 瓶颈。
- 判定阈值:
-
查看 CPU 等待时间:
mpstat -P ALL 1 5- 判定阈值:
%iowait > 10% 持续 1 分钟。 - 说明:高等待时间可能由磁盘 IO 或网络延迟引起。
- 判定阈值:
内存
-
查看内存使用情况:
free -h- 判定阈值:
used > 80%。 - 说明:高内存使用率可能导致内存不足,引发页面交换。
- 判定阈值:
-
查看内存交换情况:
vmstat 1 5- 判定阈值:
swaps > 0。 - 说明:内存交换可能由内存不足引起,影响系统性能。
- 判定阈值:
-
查看内存使用率:
top- 判定阈值:
%MEM > 90%。 - 说明:高内存使用率可能导致内存不足,引发页面交换。
- 判定阈值:
磁盘 IO
-
查看磁盘使用情况:
df -h- 判定阈值:
used > 80%。 - 说明:高磁盘使用率可能导致磁盘空间不足,影响系统性能。
- 判定阈值:
-
查看磁盘 IO 情况:
iostat -x 1 5- 判定阈值:
%util > 80%。 - 说明:高磁盘使用率可能导致磁盘 IO 阻塞。
- 判定阈值:
-
查看磁盘 IO 延迟:
iostat -x 1 5- 判定阈值:
await > 100ms。 - 说明:高磁盘 IO 延迟可能导致磁盘 IO 阻塞。
- 判定阈值:
网络
-
查看网络使用情况:
ifconfig- 判定阈值:
RX bytes > 100MB。 - 说明:高网络使用率可能导致网络带宽不足。
- 判定阈值:
-
查看网络延迟:
ping <ip>- 判定阈值:
avg < 100ms。 - 说明:高网络延迟可能导致网络通信变慢。
- 判定阈值:
-
查看网络带宽:
ifconfig- 判定阈值:
TX bytes > 100MB。 - 说明:高网络带宽使用可能导致网络带宽不足。
- 判定阈值:
踩过的坑或反直觉之处
-
CPU 瓶颈不一定由 CPU 使用率高引起:高 CPU 使用率可能由频繁的上下文切换引起,而上下文切换可能由磁盘 IO 或网络延迟引起。
-
内存瓶颈不一定由内存使用率高引起:内存使用率高可能导致内存不足,但内存不足可能由内存泄漏引起。
-
磁盘 IO 瓶颈不一定由磁盘使用率高引起:磁盘 IO 瓶颈可能由磁盘 IO 延迟引起。
-
网络瓶颈不一定由网络使用率高引起:网络瓶颈可能由网络延迟或带宽不足引起。
结论与可复用清单
通过上述步骤,可以快速定位 Linux 生产环境中的性能瓶颈。以下是一些可复用的清单:
- 查看 CPU 使用率:
top -H -p <pid>。 - 查看 CPU 上下文切换:
vmstat 1 5。 - 查看 CPU 等待时间:
mpstat -P ALL 1 5。 - 查看内存使用情况:
free -h。 - 查看内存交换情况:
vmstat 1 5。 - 查看磁盘使用情况:
df -h。 - 查看磁盘 IO 情况:
iostat -x 1 5。 - 查看磁盘 IO 延迟:
iostat -x 1 5。 - 查看网络使用情况:
ifconfig。 - 查看网络延迟:
ping <ip>。 - 查看网络带宽:
ifconfig。
通过这些步骤,可以快速定位 Linux 生产环境中的性能瓶颈,提高排查效率。
1赞
0收藏
0评论
1浏览