Linux系统下,您可以按如下步骤进行排查:
1、定位问题。找到影响带宽和CPU跑满或跑高的具体进程。
2、分析处理。排查影响带宽和CPU跑满或跑高的进程是否正常,并分类进行处理
3、对于正常进程:您须要对程序进行优化或则升级服务器配置。
4、对于异常进程:您可以自动对进程进行查杀,也可以使用第三方安全工具去查杀。
假如云服务器Linux系统的CPU持续跑高,则会对系统稳定性和业务运行导致影响。本文对CPU占用率较高问题的排查剖析做简略说明。
CPU跑满或跑高的问题定位
若云服务器的CPU持续跑高linux主机,会对系统的稳定性和业务运行导致影响。Linux系统下,查看进程的常用命令如下:
ps-aux
ps-ef
top
Linux系统中,一般使用top命令来查看系统的负载问题,并定位耗损较多CPU资源的进程。
说明:资源负载异常时,一般难以通过SSH进行远程联接,建议您通过控制台管理终端进行联接。
通过top命令查看系统当前的运行情况。
top-17:27:13up27days,3:13,1user,loadaverage:0.02,0.03,0.05
Tasks:94total,1running,93sleeping,0stopped,0zombie
%Cpu(s):0.3us,0.1sy,0.0ni,99.5id,0.0wa,0.0hi,0.0si,0.1st
KiBMem:1016656total,946628used,70028free,169536buffers
KiBSwap:0total,0used,0free.448644cachedMem
PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND
1root2004141238242308S0.00.40:19.01systemd
2root200000S0.00.00:00.04kthreadd
针对负载问题,您只需关注回显的第一行和第三行信息,详尽说明如下。
top命令的第一行显示的内容17:27:13up27days,3:13,1user,loadaverage:0.02,0.03,0.05依次为系统当前时间、系统到目前为止已运行的时间、当前登入系统的用户数目、系统负载,这与直接执行uptime命令查询结果一致。
top命令的第三行会显示当前CPU资源的总体使用情况,下方会显示各个进程的资源占用情况。
通过字母键P,可以对CPU使用率进行逆序排列linux软件,从而定位系统中占用CPU较高的进程。
说明:通过字母键M,您可以对系统显存使用情况进行排序。倘若有多核CPU,数字键1可以显示每核CPU的负载状况。
通过ll/proc/PID/exe可以查看每位进程ID对应的程序文件。
CPU跑满或跑高的剖析处理
CPU的跑满或跑高,在确认具体的进程结果后linux cpu使用率高,针对异常的进程,您须要通过top命令将其中止;而对于kswapd0进程造成的显存不足等问题,您须要对系统进行尺寸的升级或程序的优化。
使用top直接中止CPU消耗较大的进程
您可以直接在top运行界面快速中止相应的异常进程。操作步骤如下:
若您想要中止某个进程linux cpu使用率高,只需按下大写的k键。
输入想要中止的进程PID(top输出结果的第一列)。诸如,若您想要中止PID为86的进程,输入86后按回车即可。
操作成功后,界面会出现类似Sendpid86signal[15/sigterm]的提示信息。按回车确认即可。
kswapd0进程占用造成CPU较高
操作系统都用分页机制来管理化学显存,系统会把一部份硬碟空间虚拟成显存使用。因为显存的速率要比c盘快得多,所以系统要根据某种换页机制将不须要的页面换到c盘中,将须要的页面调到显存中。
kswapd0是虚拟显存管理中负责换页的进程,当服务器显存不足的时侯kswapd0会执行换页操作,这个换页操作是非常消耗主机CPU资源的。操作步骤如下:
通过top命令查看kswapd0进程。
检测该进程是否持续处于非睡眠状态,且运行时间较长。若是,可以初步判断系统在持续地进行换页操作,kswapd0进程占用了系统大量CPU资源。
您可以通过free、ps等指令进一步查询系统及系统内进程的显存占用情况,做进一步排查剖析。
针对系统当前显存不足的问题,您可以重启Apache,释放显存。
说明:从长远的角度来看,您须要对显存进行升级。
带宽跑满或跑高的剖析处理
对于正常进程造成的带宽跑满或跑高的问题,须要对服务器的带宽进行升级。对于异常进程,有可能是因为恶意程序问题,或则是部份IP恶意访问引起,也可能是服务受到了CC功击。
一般情况下,您可以使用iftop工具或nethogs查看流量的占用情况,从而定位到具体的进程。
使用iftop工具排查
在服务器内部安装iftop流量监控工具。
yuminstalliftop-y
服务器内网带宽被占满时,假若通过远程未能登入,可步入到服务器内部,运行下边命令查看流量占用情况:
iftop-ieth1-P
注意:-P参数将会显示恳求端口。执行iftop-ieth0-P命令,可以查看通过服务器那个端口构建的联接,以及外网流量。举例如下:
在上图中,您可以查看到流量高耗的是服务器上53139端口和115.205.150.235地址构建的联接。
执行netstat命令反查53139端口对应的进程。
netstat-tunlp|grep53139
经反查,服务器上vsftpd服务形成大量流量,您可以通过停止服务或使用iptables服务来对指定地址进行处理,如屏蔽IP地址或限速,以保证服务器带宽才能正常使用。
使用nethogs进行排查
在服务器内部安装nethogs流量监控工具。
yuminstallnethogs-y
通过nethogs工具来查看网卡上进程级的流量信息,若未安装可以通过yum、apt-get等形式安装。举例如下:
若eth1网卡跑满,执行命令nethogseth1。
查看每位进程的网路带宽情况以及进程对应的PID。
确定造成带宽跑满或跑高的具体进程。
若进程确定是恶意程序,可以通过执行kill-TERM来中止程序。
说明:假如是Web服务程序,您可以使用iftop等工具来查询具体IP来源,之后剖析Web访问日志是否为正常流量。日志剖析可以使用logwatch或awstats等工具进行。