问题原因
当您发现云主机的运行速度变慢或云主机突然出现网络断开的现象,则可能是由以下原因导致的。
- 云主机使用共享资源型实例:共享资源型实例在云计算中是指多个虚拟机共享同一台物理服务器的资源,这会导致资源争用,可能导致服务器卡顿问题。
- 云主机受到恶意软件或病毒感染:恶意软件可能执行各种恶意任务,占用大量计算资源,增加云主机网络带宽和资源消耗,影响正常的服务运行等,可能导致服务器卡顿问题。
- 云主机系统资源利用率异常:资源包括CPU、内存、磁盘和网络等,当其中一个或多个资源受到过度使用或不合理分配时,可能导致服务器卡顿问题。
问题处理
云主机使用资源共享型实例
步骤一:问题定位
检查当前云主机的规格类型,共享资源型和独享资源型实例的说明请参见规格类型。
步骤二:问题处理
独享资源型实例在云计算中独享物理服务器的资源,可以提供更稳定和可预测的性能。如果您对业务稳定性有较高要求,建议您将共享型资源型实例变更为独享资源型实例,请参见变更规格。
云主机受到恶意软件或病毒的感染
步骤一:问题定位
定位云主机是否受到恶意软件感染,您可以运行受信任的杀毒软件或安全扫描工具,对服务器进行全面扫描。此外,您还可以检查操作系统、应用程序和安全软件是否为最新版本,并已应用最新的安全更新和补丁。
步骤二:问题处理
如果服务器受到恶意软件感染,及时采取行动非常重要。隔离服务器、运行安全扫描工具、清除恶意软件、更新系统等都是确保服务器安全的关键步骤。
云主机系统资源利用率异常
步骤一:问题定位
定位云主机中CPU利用率高、带宽流量大、内存使用量高的进程。查看网络问题时,您可以检查网线、路由器等硬件设备是否正常工作,之后使用命令行工具ping命令来测试与其他计算机的网络连接,检查延迟和丢包情况。
步骤二:问题定位步骤
本部分详细介绍了问题定位步骤,您可按照如下流程进行排查。以CentOS 7 64位操作系统为例,其他版本的操作命令请查阅相应操作系统的官方文档。
本文以CentOS 7 64位操作系统为例,其他版本的操作命令请查阅相应操作系统的官方文档。
CPU占用率高
使用top、htop和sar来监控系统的资源利用率是诊断服务器性能问题的常用方法。其中,top用于实时监控系统的进程和资源利用率,可以查看CPU使用率、内存使用率、运行中的进程列表、负载情况等;htop是top的增强版本,提供更多的交互式功能和更友好的界面;sar是系统性能分析工具,用于监控和报告系统资源利用率的历史数据。
本文以top命令为例,诊断服务器性能问题。
-
执行top命令查看当前系统的运行状态。
-
分析回显结果。
- 命令回显第一行:17:39:20 up 7 min, 2 users, load average: 0.22, 0.57, 0.37表示系统当前时间为17:39:20,该服务器已运行7分钟,当前共有2个用户登录,最近1分钟、最近5分钟和最近15分钟的CPU平均负载分别为0.22,0.57和0.37。
- 命令回显第二行:任务总体情况,Tasks下的总数(total)、运行中(running)、休眠中(sleeping)、已停止(stopped)、僵尸进程(zombie)表示不同状态下的进程数量。
- 命令回显第三行:CPU资源总体使用情况,%Cpu(s) 下的用户(us)、系统(sy)、等待(wa)和空闲(id)等表示不同类型的CPU使用情况。
- 命令回显第四行:内存资源总体使用情况,KiB Mem下的总内存(total)、使用内存(used)、空闲内存(free)和缓冲区/缓存(buff/cache)表示不同的内存使用情况。
- 命令回显最下方:进程列表描述了各进程的资源占用情况,显示了系统中运行的进程,包括进程ID(PID)、CPU利用率、内存利用率、进程状态等。
- 按下小写“q”键退出top命令。
-
通过“ll /proc/PID/exe”命令查看每个进程ID对应的程序文件,判断该进程为正常程序或异常程序。
-
按下大写“P”键以CPU占用率大小的顺序排列进程列表,找到占用CPU资源最多的进程,记录其进程ID和进程名称。使用工具strace、perf等进行进程的性能分析,找出造成高CPU 使用率的具体原因。
-
如果是您自己的应用程序占用CPU较高,可以分析和优化代码,减少CPU使用,比如优化算法、减少循环次数、缓存数据等。
-
如果是系统资源不足引起CPU占用较高,您可以考虑升级硬件服务器,比如增加CPU核数或内存,请参见变更实例的CPU和内存规格。
CPU使用率高
- 如果是异常程序导致CPU使用率高,可以直接通过top命令终止进程。
-
在top命令运行同时,按下小写“k”键,输入要终止进程的PID后回车。例如,本文要终止PID为2的进程。
-
终止进程成功后,会显示如下类似的信息,按回车确认。
-
- kswapd0是Linux内核中的后台进程,是内核内存管理子系统中的一部分,负责处理内存交换操作。它的主要目的是将不经常使用的内存页面交换到磁盘空间,以释放物理内存供其他进程使用。使用top命令查看kswapd0进程的资源使用情况。
- 如果kswapd0处于睡眠状态,这表示系统当前的内存使用情况相对较好。
- 如果kswapd0处于激活状态(不处于睡眠状态),且运行时间较长,这可能暗示系统内存不足,初步判断正在进行持续换页操作,您可以增加内存进行系统规格的升级,或者对应用程序进行优化。
- 使用vmstat命令进一步查看系统虚拟内存的使用情况,如果si和so的值较低,说明系统内存和交换空间的平衡状态良好;如果si和so的值较高,说明系统正在进行频繁换页操作,您可以增加内存进行系统规格的升级,或者对应用程序进行优化。
- 当内存不足时,您可以关闭或减少大量内存的应用程序或进程,或者使用free、ps等命令进一步查询系统及系统进程的内存占用情况,再做进一步排查分析。
- 您可通过在业务空闲期重启应用或者系统来释放内存,或者优化应用程序、配置大页内存来暂时缓解CPU使用率高的情况。如果要从根本上解决内存不足问题,建议您对服务器内存进行扩容。
带宽使用率高
- 如果是正常业务访问和正常应用程序导致带宽使用率高,您可以升级服务器的带宽进行解决。
- 如果是异常应用程序导致带宽使用率高,您可以通过流量监控工具nethogs来实时监测统计各进程的带宽使用情况,进一步定位异常进程。
-
使用命令yum install nethogs -y安装nethogs工具,安装完成后可以查看网络带宽的使用情况。执行命令时指定参数:-d设置刷新的时间间隔,默认为1s;-t开启跟踪模式;-c设置更新次数;device设置要检测的网卡,默认是eth0。
-
例如:使用nethogs eth1查看eth1网卡上每个进程的网络带宽使用情况。回显参数说明:PID表示进程ID;USER表示运行该程序的用户;PROGRAM表示进程或连接双方的IP地址和端口,第一个是服务器IP和端口,第二个是客户端IP和端口;DEV表示流量要去往的网络端口;SENT表示进程每秒发送的数据量;RECEIVED表示进程每秒接收的数据量。
- 如果是恶意应用程序导致带宽使用率高,您可以使用kill PID命令终止恶意进程。
- 如果是非正常业务访问导致带宽使用率高,比如某个IP恶意访问、遭受DDoS攻击或CC攻击,您可以采取以下措施。
- 使用iptables服务对指定IP地址进行处理,比如屏蔽IP地址或限速。
- 查看Anti-DDoS攻击是否开启,并检查防护策略是否配置合适,请参考开启Anti-DDoS防护。
- 查看CC防护策略是否开启,并检查防护策略是否配置合适,请参考CC防护。
步骤三:问题处理
- 正常程序:优化程序,或变更云主机配置,请参见实例配置变更。
- 异常程序:确保异常程序不会影响到系统组件或其他用户,您可以手动关闭进程或隔离异常程序。根据异常原因,您还可以采用适当的措施来修复问题,比如:更新程序代码、修复配置、应用补丁等。