如何用吞吐量与CPU负载区分海外服务器网络瓶颈和性能不足?
海外服务器带宽不足,通常表现为出站或入站吞吐量在业务高峰期长期贴近线路、实例或服务商设定的上限,传输速度出现平台期;同时连接队列、TCP重传、请求响应时间和超时数量可能同步上升。但吞吐量下降并不等于带宽不足,CPU计算、内存回收、磁盘等待、数据库锁等待、应用线程池耗尽,以及跨地域链路丢包,都可能让业务变慢。
区分网络瓶颈和服务器性能不足,不能只看CPU使用率或某一时刻的网卡速率。更可靠的做法是建立同一时间窗口,把网络吞吐量、CPU用户态与系统态占用、内存压力、磁盘I/O、TCP重传、队列长度、请求延迟和错误率放在一起比较,再排除客户端区域、应用并发和数据库等待等替代解释,最后通过相同条件复测。
一、先明确要观察的“吞吐量”和“负载”
带宽、吞吐量与业务传输量不是同一个指标
带宽更接近线路或端口的容量上限,吞吐量是某一时间段内实际传输的数据量。海外服务器可能同时受到以下几层限制:
- 云服务器或物理服务器网卡的端口速率;
- 服务商套餐的入站或出站带宽上限;
- 虚拟化平台对实例的突发带宽和持续带宽限制;
- 操作系统、网卡队列和TCP连接的处理能力;
- 远端用户所在地区、运营商和跨境链路的实际质量;
- 应用自身生成或发送数据的速度。
因此,监控中看到的网卡发送速率为 300 Mbps,并不能直接说明购买了 1 Gbps 带宽却只使用了 30%。应用可能只产生了 300 Mbps 数据,也可能因为CPU、磁盘或数据库等待,根本没有能力生成更多数据。
数据量换算时还要区分字节和比特。按十进制口径,1 GB 数据在60秒内传完,对应的平均速率为:
1 GB × 8 × 1000 ÷ 60 = 133.3 Mbps
如果60秒内传输的是10 GB,则平均速率为:
10 GB × 8 × 1000 ÷ 60 = 1333.3 Mbps
这个结果已经超过1 Gbps线路的理论速率,实际传输还会受到协议头、加密、重传和应用响应的影响。不要把 GB/s、GB、Gbps 和 Mbps混为一谈。
CPU负载也不能只看一个百分比
CPU使用率要拆成不同来源:
user:应用程序执行消耗;system:内核、网络协议栈、系统调用等消耗;iowait:CPU等待磁盘或其他块设备I/O完成的时间;steal:虚拟机被宿主机调度出去的时间;idle:空闲时间。
load average则主要反映处于可运行状态或不可中断等待状态的任务数量,不等同于CPU使用率。磁盘卡顿时,即使CPU还有较多空闲,负载平均值也可能明显升高。
例如,4核服务器的CPU总使用率为60%,但其中 iowait 为35%,这并不表示应用只用了60%的计算能力后仍然运行良好,而可能表示大量请求在等待磁盘。相反,CPU总使用率95%,其中用户态占90%,运行队列持续高于CPU核心数,才更接近计算资源不足。
同一个时间窗口应至少记录这些指标
| 指标类别 | 建议观察项 | 能够回答的问题 |
|---|---|---|
| 网络吞吐量 | 网卡发送、接收速率,应用发送字节数 | 是否真的接近端口或套餐上限 |
| 网络质量 | RTT、抖动、丢包、TCP重传、发送队列 | 是容量不足,还是链路质量不稳定 |
| CPU | user、system、iowait、steal、每核占用、运行队列 | 是否存在计算、内核处理或虚拟化调度压力 |
| 内存 | available、swap in/out、缺页、回收活动 | 是否因内存压力导致系统变慢 |
| 磁盘I/O | IOPS、吞吐量、await、util、队列深度 | 请求是否在等待存储 |
| 应用 | 请求数、p50/p95/p99、工作线程、连接池、队列 | 延迟发生在应用处理还是网络传输 |
| 数据库 | 查询耗时、锁等待、活跃连接、慢查询、缓存命中 | 是否是数据库成为上游瓶颈 |
| 结果指标 | 超时率、4xx、5xx、断开连接数 | 性能变化是否已经影响业务 |
这些指标不必全部采用相同的采样间隔。系统指标可以按1秒或5秒采样,请求延迟可以按1分钟统计分位数,数据库锁等待可以按请求或事务记录。关键是时间戳统一,能够把同一时刻的变化对齐。
二、建立观察窗口,而不是凭单点数值下结论
同时保存基线、异常和恢复阶段
性能判断至少要包含三个阶段:
- 基线阶段:业务正常时记录10至30分钟,覆盖普通流量和一次常见高峰。
- 异常阶段:从问题发生前几分钟开始,持续记录到延迟、错误率或吞吐量恢复。
- 复测阶段:在相同请求类型、相近并发量和相同地域条件下重新观察。
如果只有异常时的一次CPU截图,就无法判断CPU是原因还是结果。例如,网络拥塞可能使应用连接长时间不结束,最终导致工作线程堆积,随后CPU和负载才升高。此时“CPU升高”和“业务变慢”同时出现,但CPU不一定是最初的瓶颈。
用变化关系代替固定阈值
不建议单独使用“CPU超过80%就是性能不足”或“网卡超过70%就是带宽不够”这样的规则。更有价值的是观察指标之间是否同步变化:
- 吞吐量升高后是否在一个稳定平台停住;
- 网卡接近上限时,CPU、磁盘和数据库是否仍有余量;
- 响应时间增加时,TCP重传是否同步增加;
- 请求队列变长前,究竟是网络发送队列、应用队列还是数据库锁等待先变化;
- 降低并发后,问题是否迅速消失;
- 更换访问地域后,服务器端指标是否仍然保持异常。
如果指标变化存在稳定的先后顺序,因果判断会比单点阈值更可信。
三、带宽不足通常会呈现怎样的联动信号
1. 吞吐量接近上限并出现平台期
最典型的容量型网络瓶颈,是发送或接收速率随着并发增加而上升,随后在某个水平附近长时间停留。此时应用仍有未完成的发送任务,但网卡或上游线路无法继续提高传输速度。
常见表现包括:
- 出站流量长期接近实例或端口的配置上限;
- 下载、视频、文件分发等大流量业务速度出现平台期;
- 增加并发连接后,总吞吐量不再明显上升,但排队时间增加;
- 服务器CPU、内存和磁盘利用率没有同步达到高位;
- 单个请求的传输耗时变长,p95或p99延迟高于p50;
- 连接数、发送队列或应用待发送队列增加;
- 限速发生在发送方向,而不是所有方向同时异常。
例如,某服务器的理论出站上限约为1 Gbps,模拟监控数据如下:

| 时间段 | 出站吞吐量 | CPU总占用 | 磁盘iowait | TCP重传占比 | 请求p95 | 5xx比例 |
|---|---|---|---|---|---|---|
| 正常阶段 | 420 Mbps | 34% | 2% | 0.3% | 210 ms | 0.1% |
| 流量增加后 | 760 Mbps | 39% | 3% | 0.8% | 380 ms | 0.2% |
| 高峰阶段 | 880 Mbps | 42% | 3% | 3.5% | 960 ms | 0.9% |
| 持续高峰 | 885 Mbps | 41% | 4% | 4.1% | 1.1 s | 1.2% |
这组数据只是用于说明判断过程的模拟样例,不代表实际监控结果。它的关键不在于“880 Mbps”这个绝对值,而在于:吞吐量逐步上升后停在接近1 Gbps的水平,CPU和磁盘仍有明显余量,延迟、重传和错误率随后同步恶化。此时应优先核对出站带宽限制、端口速率、实例套餐策略和出口设备队列。
2. 吞吐量不高,也可能是网络质量瓶颈
“带宽不够”有两种常被混淆的情况:

- 容量型不足:线路或端口的可用容量本身不够;
- 质量型异常:线路容量可能充足,但跨地域路径存在丢包、抖动、拥塞或路由绕行。
质量型问题未必会让网卡吞吐量贴近上限。TCP发现丢包后会降低发送窗口,重传和等待会让实际吞吐量反而变低。海外访问中,跨地域RTT较高会延长拥塞控制收敛时间;如果同时发生丢包,单个连接的有效传输速度会更加明显地下降。
质量型网络问题常见的联动关系是:
- 只有某个国家、地区或运营商的访问变慢;
- 服务器CPU和磁盘利用率正常;
- 服务器端看到的业务吞吐量不高,甚至低于平时;
- RTT、抖动、TCP重传或连接重置数量上升;
- 小请求也可能出现偶发超时,大文件下载速度波动明显;
- 更换访问区域后,延迟和错误率差异较大。
因此,不能因为网卡只有200 Mbps就排除网络问题。若该200 Mbps伴随着较高重传、发送窗口缩小和远端区域延迟升高,问题更可能在链路质量,而不是服务器算力。
3. 发送方向和接收方向要分开判断
海外服务器常见的业务方向并不相同:
- 网站、接口和文件分发通常更关注服务器出站流量;
- 用户上传、备份回传、日志接收更关注入站流量;
- 数据库复制、对象存储同步可能是固定方向的后台流量;
- 多个业务共享一条出口时,后台同步可能挤占前台请求。
如果只看“总流量”,容易把入站高峰和出站高峰混在一起。应分别记录 rx 和 tx,并尽量与应用层的发送字节、接收字节对应。应用日志显示响应内容只有几百MB,但网卡出站达到数GB,可能存在重复传输、重试、后台同步或其他服务占用出口。
四、服务器性能不足时,吞吐量通常不是第一限制
网络传输只是请求链路中的一段。应用在生成响应前,还要经过业务计算、内存分配、文件读取、数据库查询和线程调度。只要其中任一环节耗时增加,网卡就可能因为“没有数据可发”而保持低利用率。
CPU瓶颈:高计算占用与高运行队列同时出现
CPU不足更接近以下组合,而不是单独看到CPU百分比升高:
- 用户态或系统态占用持续接近高位;
- 某些CPU核心先达到饱和,平均值却没有达到100%;
- 运行队列持续增加;
- 应用处理耗时上升,但TCP重传并未同步明显增加;
- 服务器出站吞吐量低于带宽上限;
- 降低并发或暂停某类计算任务后,响应时间快速恢复;
- 应用进程、压缩、加密、序列化、正则匹配或脚本执行占用了主要CPU。
多核服务器中,平均CPU使用率可能掩盖单核瓶颈。例如8核实例的总CPU占用为45%,但一个单线程事件循环所在核心接近100%,请求仍可能排队。需要同时看每个核心、进程级CPU和应用线程池状态。
CPU瓶颈的示例数据如下:
| 时间段 | 出站吞吐量 | CPU总占用 | 最高单核占用 | 运行队列 | TCP重传 | 请求p95 |
|---|---|---|---|---|---|---|
| 正常阶段 | 260 Mbps | 48% | 72% | 2 | 0.2% | 180 ms |
| 业务计算增加 | 300 Mbps | 78% | 100% | 7 | 0.3% | 520 ms |
| 高并发阶段 | 315 Mbps | 93% | 100% | 14 | 0.4% | 1.2 s |
这同样是解释机制的模拟数据。虽然请求延迟上升,但出站吞吐量只从260 Mbps增加到315 Mbps,远没有接近线路上限;与此同时,CPU核心和运行队列先达到高位,重传变化很小,更支持“服务器计算能力或应用处理能力不足”的判断。
内存瓶颈:不要只看free内存
Linux系统中,free较低并不一定代表内存不足,因为系统会利用空闲内存作为文件缓存。判断内存压力时,应联动观察:
available是否持续下降;- 是否出现明显的swap写入和读入;
- 进程缺页、内存回收和直接回收是否增加;
- 应用是否频繁触发垃圾回收;
- 磁盘I/O是否随内存回收同步升高;
- 请求延迟和错误率是否在内存压力出现后变化。
内存不足可能间接制造“网络变慢”的错觉。比如应用响应需要从缓存中读取数据,内存紧张后频繁从磁盘换入,CPU并不一定满载,网卡吞吐量也不高,但请求处理时间会显著增加。如果只看网卡速率,可能误判为海外网络质量问题。
磁盘瓶颈:低磁盘吞吐量不代表磁盘没有问题
磁盘性能不能只看MB/s。随机读写、同步写入和小文件操作可能在吞吐量不高的情况下消耗大量IOPS,并使请求排队。
需要同时观察:
await:一次I/O从提交到完成的平均等待时间;util:设备忙碌时间比例;- I/O队列长度;
- 读写IOPS;
- 应用的文件读写耗时;
iowait是否随磁盘队列同步升高;- 数据库查询、日志写入是否与磁盘延迟同时恶化。
磁盘瓶颈常见的表现是:服务器网络吞吐量不高,CPU用户态占用一般,但iowait、磁盘等待和应用响应时间同时升高。若降低日志级别、减少批量写入或暂停非关键备份任务后延迟恢复,磁盘方向的解释更有依据。
数据库瓶颈:CPU不高也能拖慢整条请求链
数据库等待经常被误认为网络慢,尤其是海外服务器访问远端数据库或数据库连接池配置不合理时。需要区分以下情况:
- 查询本身执行时间变长;
- 锁等待和事务阻塞增加;
- 活跃连接数接近连接池上限;
- 数据库CPU或磁盘达到瓶颈;
- 应用线程都在等待数据库返回;
- 数据库与应用之间RTT较高,频繁的小查询放大了等待时间;
- 查询结果较大,数据库已完成计算,但应用仍在等待数据接收。
如果应用请求p95从200ms升到2s,服务器出站吞吐量没有明显增加,CPU为35%,磁盘iowait为5%,但数据库锁等待从几毫秒升至800ms,那么优先方向应是数据库事务和连接池,而不是购买更多带宽。
应用瓶颈:工作线程和队列可能先于系统资源报警
应用层资源耗尽时,服务器硬件监控可能看起来并不紧张。典型指标包括:
- 工作线程、进程或事件循环达到上限;
- 请求队列长度持续增加;
- 连接池等待时间上升;
- 上游服务响应慢,导致本地线程被占用;
- 垃圾回收暂停、运行时锁竞争或线程锁等待增加;
- 应用返回超时,但网络重传没有明显增加;
- 降低并发后,请求耗时迅速回落。
此类问题的关键是把“请求排队时间”和“实际处理时间”拆开。如果排队时间占总耗时的大部分,继续增加带宽通常无法解决工作线程不足。
五、把网络瓶颈与服务器瓶颈放在同一张对照表中
| 观察组合 | 更可能的原因 | 需要进一步核对 |
|---|---|---|
| 出站吞吐量贴近上限,CPU和磁盘有余量,发送队列变长 | 出口容量或套餐限速 | 实例带宽、端口速率、服务商限速、其他业务占用 |
| 出站吞吐量不高,CPU用户态高,运行队列持续增加 | CPU或应用计算不足 | 每核占用、进程CPU、线程池、压缩和加密任务 |
| 吞吐量不高,iowait、await和I/O队列同时升高 | 磁盘或存储延迟 | 设备利用率、读写类型、备份和日志任务 |
| 吞吐量不高,available下降,swap活动增加 | 内存压力 | 内存回收、进程RSS、缓存占用、交换分区 |
| CPU和磁盘正常,数据库锁等待或连接池等待增加 | 数据库瓶颈 | 慢查询、锁、连接数、数据库网络延迟 |
| 只有部分地区变慢,RTT和重传升高 | 跨地域链路质量或路由问题 | 地区对比、运营商对比、路径变化 |
| 多地区同时变慢,服务器队列和应用耗时同步增加 | 源站或应用性能不足 | 应用日志、进程状态、数据库和存储指标 |
| 服务器端指标正常,但客户端经常超时 | 客户端网络、路径或中间设备问题 | 不同地区、不同运营商和不同协议的对比 |
这张表只能用于建立候选方向。比如出口容量不足也可能让应用线程堆积,CPU随后升高;数据库查询慢也可能让连接持续占用,最终带来网络连接数增加。因此仍需观察指标的时间先后关系。
六、按“变化—联动—排除—复测”执行判断
第一步:确定业务和网络的观察边界
先确认问题到底是:
- 文件下载速度慢;
- 页面首字节时间变长;
- 接口整体响应变慢;
- 上传速度下降;
- 连接建立失败;
- 跨地域用户更明显;
- 只有特定业务或特定时间段发生。
然后记录请求方向、数据量和访问地域。一个返回2KB JSON的接口,和一个持续发送2GB文件的下载接口,不能用同一套吞吐量直觉判断。
同时记录当前实例的:
- CPU核心数和虚拟化类型;
- 内存容量和交换空间;
- 磁盘类型;
- 网卡名称和速率;
- 出入站带宽限制;
- 业务进程与数据库所在位置;
- 是否存在备份、同步、日志采集等后台任务。
第二步:同时采集系统和网络指标
在Linux服务器上,可以使用只读监控命令进行初步观察。下面的命令不修改系统配置,但需要根据发行版确认工具是否已安装,并将网卡名称替换为实际接口。
date
uptime
nproc
mpstat -P ALL 1 10
vmstat 1 10
iostat -xz 1 10
sar -n DEV 1 10
ss -s
ip -s link show dev eth0
这些命令的观察重点如下:
mpstat:看总CPU和每个CPU核心是否有单点饱和;vmstat:看运行队列、内存、swap和iowait变化;iostat -xz:看设备等待时间、利用率和队列;sar -n DEV:看网卡的接收和发送速率;ss -s:看连接总量和TCP连接状态;ip -s link:看网卡收发包、丢包和错误计数。
如果已经确定某个进程与问题相关,可以进一步观察进程级资源变化:
pidstat -u -r -d -p 1 10
需要替换为实际进程号。该命令可以辅助判断进程CPU、缺页和磁盘读写活动,但不等同于应用层性能分析。仍应结合应用日志中的请求耗时、排队时间、状态码和请求大小。
部分系统还提供TCP统计信息,可在确认工具可用后查看:
command -v sar
command -v nstat
nstat -az
如果不同发行版的统计字段名称不一致,应以本机帮助信息和实际输出为准,不要直接套用其他系统的字段解释。
第三步:把网卡速率与应用字节数对应起来
网卡发送速率只能说明接口层传输量,不能直接说明某个应用占用了多少带宽。需要把以下数据对齐:
- 网卡发送和接收字节数;
- Web服务器或应用记录的响应字节数;
- 数据库复制、备份和日志传输量;
- 同一时间段的请求数量和平均响应大小;
- TCP重传造成的额外流量。
例如,某接口每分钟处理6000个请求,每个响应平均500KB,则理论业务响应量约为:
6000 × 500 KB = 3,000,000 KB
按十进制换算约为3 GB。若该业务持续1分钟,理论有效业务速率为:
3 GB × 8 × 1000 ÷ 60 = 400 Mbps
如果网卡出站达到700 Mbps,需要进一步解释多出来的部分,可能来自响应头、协议开销、重传、其他业务或后台同步。反过来,如果网卡只有200 Mbps,但接口计算出的业务数据量应为400 Mbps,可能是请求并没有真正完成发送,或者应用统计口径与网卡时间窗口不一致。
第四步:排除“看起来像带宽不足”的替代解释
排除客户端和地域因素
如果只有某个地区访问慢,先做地区对比:
- 同一接口、同一响应大小;
- 相同时间段;
- 不同国家或运营商;
- 相近并发量;
- 对比TTFB、总响应时间、重传和错误率。
服务器端CPU、磁盘、应用队列都正常,而某一地区的RTT、抖动和重传明显高于其他地区,更接近路径质量问题。需要注意,ping无响应不能单独证明链路中断,因为设备可能限制ICMP;路径探测中的某一跳丢包,也不能直接等同于端到端业务丢包,应结合最终目的地和TCP数据判断。
排除后台流量抢占
检查是否存在:
- 定时备份;
- 文件同步;
- 数据库复制;
- 日志上传;
- 镜像拉取或推送;
- 批量下载;
- 其他租户或容器共享出口。
如果后台任务开始后出站吞吐量接近上限,前台请求延迟同步升高,但CPU和磁盘仍然正常,表面上像“带宽突然不够”,实际可能是带宽被额外任务占用。需要按进程、容器或服务拆分流量,而不是只看整台服务器网卡。
排除连接数和端口资源问题
连接建立失败不一定由带宽不足引起。还要观察:
- 连接状态是否大量处于
SYN-SENT、SYN-RECV或TIME-WAIT; - 应用监听队列是否溢出;
- 文件描述符是否接近上限;
- 反向代理或应用连接池是否达到上限;
- 上游连接是否大量超时。
如果请求总量不大、网卡吞吐量很低,但新连接建立时间明显变长,应优先排查连接队列和应用连接资源。
排除MTU、网卡错误和链路设备问题
如果网卡速率没有达到上限,却出现大量传输错误、丢包、重传或连接重置,应查看网卡统计、虚拟网卡状态和上游网络设备信息。常见方向包括:
- 网卡或虚拟网卡错误计数增加;
- 大包传输时问题更明显;
- 特定路径或协议表现异常;
- 网卡协商速率与预期不一致;
- 云平台安全策略或网络设备出现丢弃。
这类问题不宜直接通过修改MTU或防火墙规则解决。修改前应记录当前配置、明确影响范围,并准备恢复原配置的方法;在云服务器上还应优先核对服务商网络文档和控制台状态。
第五步:形成条件化判断
可以使用以下判断边界:

更支持“带宽容量不足”的条件:
- 问题发生时,特定方向的网卡吞吐量长期接近已知上限;
- 增加并发不能明显提高总吞吐量,只会增加排队和响应时间;
- CPU、内存、磁盘和数据库没有同步成为主瓶颈;
- 多个业务共享出口,且流量叠加后都出现传输变慢;
- 降低后台流量或减少大文件并发后,前台请求恢复。
更支持“服务器性能不足”的条件:
- 吞吐量明显低于线路能力;
- CPU核心、运行队列、内存回收、磁盘等待或数据库锁等待中至少有一项先达到异常;
- 应用处理耗时或排队时间增加,网络重传变化不明显;
- 降低计算量、减少并发或暂停高I/O任务后,响应时间恢复;
- 不同访问地区表现接近,服务器内部指标也同步异常。
更支持“跨地域链路质量问题”的条件:
- 只有特定地区或运营商受到影响;
- 服务器资源和网卡容量仍有余量;
- RTT、抖动、重传或连接重置与异常时间同步;
- 同一业务在不同地区的表现差异明显;
- 固定大小的请求也出现随机延迟和超时,而不是稳定的平台期。
如果网络容量和CPU都同时达到高位,不能强行二选一。可能是大流量传输消耗了系统协议栈处理能力,也可能是CPU不足导致发送不及时。此时应继续观察哪个指标先发生变化,并拆分业务流量和进程资源。
七、用复测验证判断,而不是停留在监控截图
网络容量复测
在获得授权并选择业务低峰期后,可以使用固定大小的测试文件或固定接口,控制并发逐步增加。复测时保持以下条件一致:
- 访问地区和运营商尽量一致;
- 文件大小、响应内容和压缩方式一致;
- 并发逐级增加,而不是一次性压满;
- 同步记录服务器端CPU、磁盘、网卡速率和TCP重传;
- 避免对生产业务造成额外流量。
如果并发增加后吞吐量在某个水平形成平台,同时服务器资源仍有余量,且降低并发后排队恢复,容量型网络瓶颈的可能性较高。测试工具本身也会消耗CPU和网络,不能把测试结果直接当成线路理论值。
CPU或I/O复测
对计算密集型接口,可以在保持网络响应大小不变的情况下,减少业务计算量或降低并发,观察:
- CPU用户态是否下降;
- 运行队列是否缩短;
- 应用处理时间是否同步下降;
- 网卡吞吐量是否仍远低于上限;
- TCP重传是否没有明显变化。
对磁盘或数据库业务,则应关注I/O等待、查询耗时和请求队列。不要只看总响应时间,因为总时间下降可能只是请求量变少,并不能说明瓶颈已消失。
地域链路复测
选择多个访问区域时,应尽量使用同一接口和相近请求大小,并记录:
- DNS解析时间;
- TCP连接建立时间;
- TLS握手时间;
- 首字节时间;
- 内容下载时间;
- 总请求时间;
- HTTP状态码;
- 重试次数;
- 服务器端收到请求和完成响应的时间。
如果服务器日志显示处理时间稳定,但客户端总耗时在某地区明显增加,问题大概率发生在服务器处理链路之外。若服务器日志中的处理时间本身也同步增加,则仍需回到CPU、数据库、磁盘和应用队列继续分析。
八、常见误判及修正方式
只看CPU低,就认定服务器没有问题
CPU低只能排除部分计算瓶颈,不能排除磁盘等待、内存回收、数据库锁、连接池耗尽和应用队列。尤其是大量请求等待数据库或远端服务时,CPU可能长期保持较低水平。
修正方式是同时看iowait、磁盘await、数据库等待、应用线程状态和请求排队时间。
只看网卡没有跑满,就认定不是网络问题
链路丢包、抖动和TCP窗口收缩会让有效吞吐量下降。海外访问中,路径质量问题可能比容量不足更常见地表现为“速度忽快忽慢”。
修正方式是把吞吐量与RTT、重传、抖动、发送队列和地域分布一起观察。
看到load average升高,就认定CPU不够
高负载可能由磁盘不可中断等待造成。若load average升高的同时,CPU用户态不高、iowait和磁盘队列升高,应优先分析I/O。
修正方式是按CPU核心数观察运行队列,并拆分可运行任务和I/O等待任务。
把RTT高直接等同于带宽小
RTT反映往返时间,不等于线路容量。跨地域访问的RTT可能天然较高,但在低丢包和足够并发的情况下,仍能获得较高吞吐量。反过来,RTT不高也可能存在出口限速。
修正方式是把RTT、吞吐量、丢包、重传和请求大小放在同一窗口中判断。
只看平均响应时间
平均值容易被少量慢请求或大量快请求掩盖。网络排队和连接抖动通常首先反映在p95、p99和超时率上。
修正方式是同时观察p50、p95、p99、最大值、超时率和错误率,并按地域、接口、响应大小分组。
下一次故障应同时观察的指标组合
下一次海外服务器出现“访问慢、下载慢或接口超时”时,建议至少保存以下四组指标,并使用统一时间戳对齐:
- 带宽容量组合:发送速率、接收速率、实例或端口上限、应用发送字节数、发送队列、共享出口的其他流量。
- 网络质量组合:RTT、抖动、丢包、TCP重传、连接建立时间、超时率、不同地区的请求耗时。
- 服务器资源组合:每核CPU、user/system/iowait、load average、运行队列、available内存、swap、磁盘await和I/O队列。
- 应用与数据库组合:请求数、p50/p95/p99、排队时间、工作线程、连接池等待、数据库查询耗时、锁等待、5xx比例。
如果第一组异常而第三组稳定,优先核对带宽容量和出口流量;如果第三组先异常而第一组没有接近上限,应优先处理CPU、内存、磁盘、数据库或应用队列;如果只有特定地区的第二组异常,则应把重点放在跨地域路径和链路质量。经过一次相同条件的复测,才能把“看起来像网络慢”转化为可验证的性能判断。