Linux线上性能排查实战指南:CPU · 内存 · 磁盘 IO · 网络的系统化定位方法
线上机器出问题后的排查步骤应首先建立全局视角,明确当前机器的整体状态,然后判断CPU、内存、磁盘IO、网络哪一条线最先失控。接着,采用一系列命令组合来获取更多信息,例如`date`, `uptime`, `top`, `vmstat`, `iostat`, `ss -s`等,以便初步了解系统的整体状况。对于CPU问题,可以通过`top`, `mpstat`, `ps aux --sort=-%cpu`等命令来查找最耗CPU的进程和线程。而对于内存问题,则需要关注`free`, `cat /proc/meminfo`, `vmstat`, `ps aux --sort=-%mem`等命令,特别是`MemAvailable`和`cached`的变化。 磁盘IO问题可通过`iostat`, `cat /proc/pressure/io`, `ss -tan`等命令来检查磁盘是否在排队以及TCP连接的状态。网络问题则需要查看`ss -s`, `ss -tan`, `ss -ti`等命令,以确定连接状态和质量。 在整个排查过程中,务必注意区分CPU、内存、磁盘IO和网络问题的不同表现形式,避免误判。此外,还需关注容器和Kubernetes环境下的特殊资源隔离机制,如cgroup和CPU限流等问题。