云主机出现卡顿现象

本文帮助您分析云主机出现卡顿时的常见问题及对应的解决方案。

一、云主机进程与服务占用过多cpu和内存

故障现象:云主机卡顿

可能原因:服务进程异常、挂死

解决方法:分为Linux操作系统和Windows操作系统

Linux操作系统

1) 统计cpu占用率最高的前10条进程

命令:ps aux | sort -rnk 3 | head

image.png

 

可以看出用户有一个进程对cpu消耗极高,将其kill掉即可

命令:kill -9 23782

2) 统计内存占用率最高的前10条进程

命令:ps aux | sort -rnk 4 | head

image.png

 

可以看出用户有一个进程对内存消耗极高,将其kill掉即可

命令:kill -9 2107

3) 使用sar工具检测云主机资源状况

A. 安装sar工具
使用 yum install sysstat 进行安装,然后使用 /etc/init.d/sysstat start 启动服务。

B. 查看 CPU 负载
用法:sar -u 1 5

示例输出:

image.png

 

参数解释:

%user:用户模式下消耗的 CPU比例。

%nice:通过 nice 改变了进程调度优先级的进程,在用户模式下消耗的 CPU 时间的比例。

%system:系统模式下消耗的 CPU 时间的比例。

%iowait:CPU 等待磁盘 I/O 导致空闲状态消耗的时间比例。

%steal:利用 Xen 等操作系统虚拟化技术,等待其它虚拟 CPU 计算占用的时间比例。

%idle:CPU 空闲时间比例。

C. 查看平均负载
命令:sar -q 1 60

image.png

 

参数解释:

指定 -q 后,可以查看运行队列中的进程数、系统上的进程大小、平均负载等信息。

runq-sz:等待运行的进程数。

plist-sz:进程列表中进程和线程数量。

ldavg-1:最后 1 分钟的平均负载。

ldavg-5:过去 5 分钟的平均负载。

ldavg-15:过去 15 分钟的平均负载。

D. 查看内存负载
命令:sar -r 1 3

image.png

 

参数解释:

kbmemfree:和 free 命令中的 free 值相同,但不包括 buffer 和 cache 空间。

kbmemused:和 free 命令中的 used 值相同,但包括 buffer 和 cache 空间。

%memused:物理内存使用率

kbbuffers 和 kbcached:和 free 命令中的 buffer 和 cache 一致。

kbcommit:当前系统所需要的内存,确保不溢出而需要的内存(RAM+swap)。

%commit:kbcommit 与内存总量(包括swap)的百分比。

E. 查看页面交换状况
命令:sar -W 1 3

image.png

 

参数说明:

pswpin/s:每秒系统换入的交换页面(swap page)数量。

pswpout/s:每秒系统换出的交换页面(swap page)数量。 

Windows操作系统

1) 右键单击开始栏-任务管理器-进程-点击“cpu”即可按cpu占用由高至低排序

image.png

 

观察CPU占用率,将占用CPU高的异常进程结束即可。

2) 点击“内存”即可按内存占用由高至低排序,右键点击“结束进程即可”

二、自定义计划任务在对应时间段内执行

故障现象:crontab有异常的计划任务

可能原因:安装了第三方不安全软件或遭到系统入侵

解决方法:检查crontab定时调度,操作如下:

1) 检查crond运行状态

命令:systemctl  status  crond

(centos7之前版本命令:service crond status)

image.png

 

running状态表示crond正在运行

2) 检查crontab运行脚本

命令:cd /var/spool/cron;ls -lrt

image.png

 

root用户有设置定时调度任务,执行命令:cat root

image.png

 

发现有两个异常任务,删掉这两行,使用命令:systemctl restart crond即可

三、Web 服务器的配置参数超过了服务器的性能

故障现象:web服务器卡顿,积压请求无法处理

可能原因:web服务器配置参数超过服务器的最大负载能力

解决方法:根据业务需求提升云主机性能,并按web服务器相关文档设置适合参数

四、连接数过高

故障现象:端口连接数过高致使系统负载过大

可能原因:业务请求并发数过高,系统性能瓶颈

解决方法:根据业务需求提升云主机性能,或者添加云主机实现LB负载均衡,实现业务流量分割。查看端口连接数步骤:

1) 使用 netstat 来查看端口连接数。

netstat 命令各参数解释:

-t:指明显示 TCP 协议端口

-u:指明显示 UDP 协议端口

-l:仅显示监听套接字

-p:显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。

-n:不进行 DNS 反向解析,只显示 IP (可以加速操作)

2) 停止端口

查找端口占用的进程,使用如下命令来查看(以查看9000端口为例):

netstat -antp | grep 9000

image.png

 

可以看到 PID 为 1070 的进程占用了这个端口。

停止相应进程即可。

五、网络延迟过高

故障现象:远程ping云主机时不通,或出现丢包

可能原因:本地网络与云主机网络之间有网络节点异常

解决方法:分为Linux操作系统和Windows操作系统

Linux操作系统

1) 使用mtr工具检测网络连通性

 命令:mtr 8.8.8.8

image.png

结果分析:

默认配置下,返回结果中各数据列的说明:

Host:节点IP地址和域名。如前面所示,按n键可以切换显示。

Loss%:节点丢包率。

Snt:每秒发送数据包数。默认值是10,可以通过参数 -c 指定。

Last:最近一次的探测延迟值。

Avg、Best、Wrst:分别是探测延迟的平均值、最小值和最大值。

StDev:标准偏差。越大说明相应节点越不稳定。

Windows操作系统

1) WinMTR 安装,直接解压运行即可。

2) 如下图所示,运行程序后,在 Host 字段输入目标服务器域名或 IP(注意前面不要包含空格)。

image.png

 

结果分析:

Hostname:节点 IP 或域名。

Nr:节点编号。

Loss%:节点丢包率。

Sent:已发送的数据包数量。

Recv:已成功接收的数据包数量。

Best 、Avg、Worst、Last:分别是到相应节点延迟的最小值、平均值、最大值和最后一次值。

StDev:标准偏差。越大说明相应节点越不稳定。

通过上述排查后,若问题仍未解决,请您记录检查过程各步骤的排查结果、相关日志信息或截图,然后联系在线客服提供技术支持。

本文档内容整理自移动云官方帮助中心(查看原文),仅供参考。