LinuxBCC实例卡顿问题
更新时间:2024-07-02
当BCC实例的运行速度变慢或出现网络中断时,可能是BCC的CPU和网络的使用率过高导致。本文档将引导您针对使用率高的问题进行定位,并尝试自主处理相关问题,提高自运维效率。整体处理思路:
- 找到影响CPU使用率或CPU负载过高的具体进程。
- 排查影响CPU使用率或CPU负载过高的进程是否正常,并分类进行处理。
- 正常进程:考虑进行实例规格升配,或调整、优化对应的进程/程序。
- 异常进程:可以手动对进程进行查杀,或考虑使用第三方安全工具。
CPU使用率高问题定位
首先,您需要登录BCC实例。如果无法通过SSH或SmartTerm登录,请参考本产品文档中实例登录部分的相关文档,通过VNC等方式登录。
您可以考虑使用top
命令来分析进程。
返回结果说明:
上方,静态展示:
第一行:系统当前的时间,包含该BCC实例已运行时间、登录用户情况,以及最近1分钟、最近5分钟和最近15分钟的CPU平均负载。
第二行:当前系统中任务运行情况。
第三行:CPU资源总体使用情况。
第四行:内存资源总体使用情况。
下方,动态显示:各进程的资源占用情况。可以通过以下命令可以查看每个进程ID对应的程序文件:
ls -l /proc/PID/exe
CPU使用率高问题处理
异常进程处理
- 对于CPU使用率高的具体进程,如果是异常进程,可以直接通过
kill
或top
命令终止进程。
使用kill命令终止CPU使用率高的进程
kill -9 PID
使用top命令终止CPU使用用率高的进程
- 在top命令运行的同时,按下小写的“k”键,输入要终止进程的PID
常用进程处理
- 对于kswapd0进程导致的CPU使用率高的问题,需要对应用程序进行优化,或者通过增加内存进行系统规格的升级。kswapd0是系统的虚拟内存管理程序,如果物理内存不够用,系统就会唤醒kswapd0进程,由kswapd0分配磁盘交换空间用作缓存,因而占用大量的CPU资源。
当您发现实例中出现kswapd0进程占用导致CPU使用率高的情况时,您可通过以下步骤排查进程的内存占用情况:
-
通过
top
命令查看kswapd0进程的资源使用情况。如果kswapd0进程持续处于非睡眠状态且运行时间较长,可以初步判定系统在持续的进行换页操作,需将问题转向内存不足的原因来排查。
-
通过
vmstat
命令进一步查看系统虚拟内存的使用情况。如果si和so的值也比较高,说明系统存在频繁的换页操作,系统物理内存不足。si:每秒从交换区写到内存的大小,由磁盘调入内存。 so:每秒写入交换区的内存大小,由内存调入磁盘。
对于内存不足问题,可以通过free、ps等命令进一步查询系统及系统内进程的内存占用情况,做进一步排查分析,可通过在业务空闲期重启应用或者系统释放内存。
网络使用率高问题分析
当网络使用率过高时,可通过流量监控工具nethogs来实时监测统计各进程的网络使用情况,并进行问题定位。以centos 8 为例:
- 安装 nethogs
yum install -y nethogs
- 查看网卡的网络使用情况
nethogs eth0 【网卡名为eth0为例】