Linux云服务器网络QoS超限怎么办?
问题描述
- 系统出现网络时延大、丢包,服务响应时长较长等问题。
- 通过ECS控制台查看实例基础监控中的网络连接数、虚拟机出/入方向PPS、虚拟机出/入方向带宽时,发现指标监控结果超过了虚拟机规格QOS限制。
- 收到网络连接数使用率超过ECS规格QOS、网络PPS/带宽使用率超过ECS规格QOS的告警信息。
ECS实例的连接又称网络会话,是客户端与服务器建立连接并传输数据的过程。与Guest内部实时的连接总数存在关联,但数值不完全相等,ECS实例基础监控中的网络连接数会高于Guest内部实时的连接总数。
网络五元组(包括源IP、目的IP、源端口、目的端口、协议)唯一确定一个连接,ECS实例的连接数包括通过TCP、UDP、ICMP协议建立的连接。如果您的业务对网络并发敏感,请根据业务需求选择明确标注了连接数参数的实例。详细信息,请参见规格清单(x86)。
排查方法
本文相关操作命令以CentOS 7.9 64位操作系统为例。其它版本的Linux操作系统命令可能有所差异,具体情况请参阅相应操作系统的官方文档。
- 使用ss命令排查ECS实例的连接数。
- 登录弹性云服务器,具体操作,请参见Linux ECS登录方法概述。
- 执行如下命令查看当前系统的连接数总数。
系统回显样例如下,从回显结果中,可以明确哪种协议的连接比较多。
图1 操作结果 - 执行以下命令查看当前系统TCP/UDP的连接数较高的端口。
ss -anupt |grep -v LISTEN| awk '{print $5}' | sort -nr |uniq -c | sort -nr | head -n 10
从回显中可以确认连接数比较多的本地端口,可以根据该信息进一步分析是否存在异常程序或者非预期内的连接。
- 使用iftop工具查看主机或IP维度的网络接口指标
iftop是Linux系统中一个免费的网卡实时流量监控工具,可以监控包括指定网卡的实时流量、端口连接信息、反向解析IP等信息。
- 使用介绍
iftop常用命令格式如下:
sudo iftop [-i interface]
- 使用示例
- 登录弹性云服务器,具体操作,请参见Linux ECS登录方法概述。
- 执行以下命令安装iftop。
- 执行如下命令,查看详细端口流量占用情况。
图2 操作结果
- 显示结果主要字段说明如下:
- 使用iftop工具查看主机或IP维度的网络接口指标
- 处理实例网络QOS超限问题的原因及解决方案。
表1 网络QOS超限问题的原因及解决方案 问题现象
原因
解决方案
异常用户程序或进程长时间占用大量网络资源(连接数、带宽、pps)
该程序为异常程序或进程,运行时占用过多网络资源。
通过在ss、iftop工具定位到占用网络资源较多的程序的PID,并通过如下方式结束进程。
注意:在您结束进程前,请务必确保您了解该进程的相关信息,避免因误操作导致您的业务中断。
- 通过kill -15 <进程PID>来结束该进程。
- 如果怀疑进程为恶意程序,您可以对其进行查杀,相关操作,请参见病毒查杀。
正常用户程序或进程长时间占用大量网络资源,或者有指定IP地址访问服务,从而导致网络负载较高。
该程序为正常业务程序或进程,运行时占用过多网络资源。
如果实例出现网络QOS瓶颈,您可以结合实际情况选择相应的处理策略。
- 升级实例规格。相关操作。请参见变更实例规格。
- 优化业务程序(修改为长连接等)。