本文以CentOS 6.5 64位操作系统为背景,探讨服务器Linux系统中CPU持续高负载或网络带宽占满时的排查思路。资源异常会直接影响系统稳定性及业务连续性,需通过系统级工具定位问题根源,采取针对性措施恢复服务。
当系统CPU占用率异常时,可通过以下步骤定位并处理问题:
1. 系统负载实时监控
`top`命令是核心监控工具,其输出首行显示系统运行时间(如“up 27 days, 3:13”)、当前登录用户数及负载均值(“load average: 0.02, 0.03, 0.05”),与`uptime`命令结果一致,反映系统1/5/15分钟内的平均负载;第三行“%Cpu(s)”则展示CPU细分使用情况(用户态us、系统态sy、空闲id等),需重点关注“id”值过低或“us”“sy”过高的情况。
2. 高CPU进程定位
在`top`界面按“P”键可按CPU使用率降序排列进程,快速定位占用资源的前PID(如“%CPU”列异常值);若需分析内存占用,按“M”键按内存排序;多核环境下按“1”可查看各核心独立负载。通过`ll /proc/PID/exe`可明确进程对应的可执行文件路径,避免误终止系统关键进程。
3. 异常进程处理
确认异常进程后,在`top`界面按“k”键输入进程PID,发送信号终止(默认为15/SIGTERM,优雅退出进程);若进程无响应,可改用`kill -9 `强制终止(需谨慎,可能导致数据丢失)。处理前需结合业务逻辑判断进程合法性,避免误杀业务进程。
4. 内存辅助排查
结合`free -h`查看系统内存总量、已用及空闲情况,`ps -aux --sort=-%mem`按内存占用排序进程,排查是否因内存不足触发频繁 swapping(交换分区使用),间接导致CPU sys升高。内存不足时,可尝试重启非核心服务(如Apache)或服务器释放资源。
当外网带宽被占满导致SSH连接异常时,需通过本地操作定位流量来源:
1. 流量实时监控
使用`iftop -i -P`(如“eth1”)查看实时流量,按“P”键显示端口连接,“n”切换IP/主机名模式。重点关注“=>”发送流量、“<=”接收流量异常高的IP及端口(如“53139端口与115.205.150.235建立连接”)。
2. 进程与端口关联
通过`netstat -tunlp |grep `(如“53139”)定位占用端口的进程(如“vsftpd”),判断是否为正常业务流量(如FTP服务)或恶意连接(如DDoS攻击)。
3. 流量控制措施
若为恶意IP,可通过`iptables -I INPUT -s -j DROP`屏蔽地址;若为正常业务流量超限,可配置`iptables`限速(如`iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/s -j ACCEPT`);若为服务异常(如vsftpd配置缺陷),建议停止服务并优化配置。