代理客户端速度慢怎么办?先分清延迟、丢包还是持续吞吐
简答:代理客户端速度慢时,先关闭代理建立本地基线,再用同一目标和同一节点测试首开、丢包与持续下载速度。延迟低不代表吞吐稳定,必须通过单变量对比判断问题在设备、配置、节点、线路还是目标网站。
定义:代理客户端速度慢,是指连接已建立但出现网页首开慢、持续下载速度低、视频缓冲、连接间歇中断或只有特定应用变慢等现象。
先试这一步:用同一设备做直连与代理对照
本文是第三方使用指南,不代表任何客户端或线路服务的官方页面。排查时不要同时更换设备、节点、模式和测试网址,否则无法判断是哪一个变量造成变化。
| 症状 | 优先观察指标 | 先做什么 | 常见定位方向 |
|---|---|---|---|
| 网页打开前等待很久 | DNS耗时、TCP连接耗时、TLS耗时、首字节时间 | 同一网址分别直连和代理访问 | DNS、规则命中、节点握手或目标站响应 |
| 网页能打开但下载慢 | 持续吞吐量、下载时长、速度波动 | 固定同一个大文件重复下载 | 节点负载、线路拥塞、协议或本机后台占用 |
| 视频频繁缓冲 | 持续吞吐、丢包、连接是否反复切换 | 固定清晰度并观察同一时间段 | 带宽不足、丢包、UDP能力或目标平台限制 |
| 只有一个网站慢 | 不同网站首开和下载结果 | 换两个独立目标对照 | 目标服务器、CDN、地区出口或单站规则 |
| 所有应用都慢 | 网关丢包、节点地址连通性、持续吞吐 | 先停用TUN或系统代理做对照 | 本地网络、客户端配置、节点或线路 |
Windows 的 ping 是 ICMP 连通性和往返时间测试,pathping 会对路径中的路由器发送多次探测并统计丢包;这些结果不能直接等同于代理链路的实际网页或下载速度。参考 Microsoft 的 ping 文档和 Microsoft 的 pathping 文档。
重要:系统代理模式下,直接执行 ping 目标域名通常测的是本地到目标的直连ICMP路径,不是代理流量路径;TUN配合fake-ip时,域名可能被解析到文档所示的假地址范围,直接对该地址执行ping没有代理链路判断价值。更稳妥的做法是分别测试默认网关和节点服务器地址,并把ICMP结果只当作辅助证据。
- Windows:先在命令提示符执行
ipconfig,找到默认网关,再执行ping /n 20 默认网关地址;随后对节点服务器地址执行ping /n 20 节点服务器地址。 - macOS:执行
route -n get default查看网关,再执行ping -c 20 默认网关地址和ping -c 20 节点服务器地址。 - Linux:执行
ip route查看网关,再执行ping -c 20 默认网关地址和ping -c 20 节点服务器地址。Linux的-c参数用于限定探测次数,详见ping手册。
Windows还可以使用pathping /n 节点服务器地址观察直连到节点服务器的路径和丢包统计;不要把它当成代理转发后的完整路径证明。如果节点地址本身无法确认,先在客户端的节点详情或订阅内容中查看,端口以设置页显示为准。
持续吞吐怎么测:固定文件、固定时长、重复三次
“延迟低但速度慢”并不矛盾:延迟主要反映一次往返的等待时间,持续吞吐反映连接在一段时间内能稳定传输多少数据。要比较吞吐,必须固定测试文件、设备、节点、时间段和客户端模式。
- 选择一个你能稳定访问的固定大文件地址,建议文件足够大,能够持续下载一段时间;不要每次更换网址。
- 先关闭代理,用浏览器或命令行下载一次,记录开始时间、结束时间和平均速度。
- 打开客户端后固定同一个节点,再下载同一个文件三次;每次间隔尽量一致,记录
speed_download或客户端显示的平均速度。 - 直连和代理各取三次结果,比较中位数或平均值,同时记录是否出现速度快速下降、连接重试或下载中断。
curl的speed_download表示完整下载的平均下载速度;代理参数需要写明协议类型。curl官方文档说明,HTTP代理可用http://,SOCKS5并由代理解析域名时应使用socks5h://,不能把两类端口混用。参考curl官方手册和curl URL与代理协议说明。
macOS与Linux示例
curl -L --max-time 90 -o /dev/null -w "code=%{http_code} time=%{time_total}s speed=%{speed_download}B/s\n" "TEST_URL"
# HTTP或mixed代理端口
curl -L --max-time 90 -x "http://127.0.0.1:LOCAL_PORT" -o /dev/null -w "code=%{http_code} time=%{time_total}s speed=%{speed_download}B/s\n" "TEST_URL"
# SOCKS5并让代理解析域名
curl -L --max-time 90 -x "socks5h://127.0.0.1:LOCAL_PORT" -o /dev/null -w "code=%{http_code} time=%{time_total}s speed=%{speed_download}B/s\n" "TEST_URL"Windows命令提示符示例
curl -L --max-time 90 -o NUL -w "code=%{http_code} time=%{time_total}s speed=%{speed_download}B/s\n" "TEST_URL"
curl -L --max-time 90 -x "http://127.0.0.1:LOCAL_PORT" -o NUL -w "code=%{http_code} time=%{time_total}s speed=%{speed_download}B/s\n" "TEST_URL"
curl -L --max-time 90 -x "socks5h://127.0.0.1:LOCAL_PORT" -o NUL -w "code=%{http_code} time=%{time_total}s speed=%{speed_download}B/s\n" "TEST_URL"TEST_URL、LOCAL_PORT和节点地址都是占位符,必须替换成自己的测试文件地址、客户端本地代理端口和节点信息。HTTP或mixed端口使用第一种代理写法,SOCKS端口使用第二种写法;如果不确定端口类型,以客户端设置页为准。
| 结果 | 更可能的结论 | 下一步 |
|---|---|---|
| 直连和代理都慢 | 本地网络、目标站或设备资源问题 | 换设备或网络,再测同一文件 |
| 直连正常,多个节点都慢 | 客户端模式、本地网络、DNS或线路整体问题 | 关闭TUN或系统代理做一次对照 |
| 只有一个节点慢 | 节点负载、节点出口或该节点线路问题 | 在相同时间测试同地区的其他节点 |
| 延迟低但吞吐持续下降 | 短时响应正常,长连接传输不稳定 | 观察丢包、速度曲线和后台占用 |
| 速度高但网页首开慢 | DNS、TLS握手、规则匹配或目标站响应慢 | 记录首开分段时间,不要只看测速结果 |
按五层定位:本地网络、客户端、DNS规则、节点线路、目标网站
- 本地网络层:先暂停云同步、系统更新、下载器和其他代理;用网线或另一条Wi-Fi对照。若默认网关丢包,优先处理路由器、无线信号或局域网占用,不要先换节点。
- 客户端层:确认只启用了一个代理客户端,避免系统代理、TUN、浏览器扩展和其他网络工具叠加。规则模式、全局模式和直连模式要分别记录结果。以mihomo为例,官方配置文档将模式区分为
rule、global和direct,并说明TUN用于接管系统流量;具体菜单名称以当前客户端版本为准,可参考mihomo通用配置文档和mihomo入站与TUN说明。 - DNS与规则层:如果只有首开慢、偶发解析失败或不同模式结果差异很大,检查DNS模式、分流规则和规则命中。fake-ip场景下,不要把假地址当作真实节点地址测试;mihomo的DNS文档列出了
enhanced-mode、fake-ip-range、nameserver-policy等字段,修改前应先确认运行配置确实加载了新值,参考mihomo DNS配置文档。 - 节点与线路层:不要只按最低延迟选节点。将同一时间、同一测试文件下的多个节点记录在表格中,至少比较首开、持续吞吐、丢包和是否反复重连。mihomo的策略组健康检查是对指定测试地址进行延迟或状态检查,不等同于完整下载测速;相关字段包括
url、interval、timeout和expected-status,详见mihomo策略组文档。 - 目标网站层:如果只有一个网站或一个视频平台变慢,换两个独立目标做对照;若其他目标正常,不能仅凭一个站点的结果判定节点或客户端整体变慢。还要记录目标地区、CDN变化、登录状态和是否存在平台限速。
视频缓冲时,先固定清晰度并观察实际下载速度。如果客户端或节点不支持目标连接所需的UDP能力,某些应用可能改用TCP或出现重试;这类现象应通过连接记录、规则命中和节点的UDP支持状态核对,不能仅凭“延迟低”下结论。mihomo API文档提供了代理的udp、alive、延迟历史和当前选中节点等字段,可作为客户端连接详情的核对依据,参考mihomo API文档。
主流客户端的排查入口速查
以下是通用入口提示,不承诺所有版本菜单名称完全一致;找不到时优先查看客户端的连接、日志、代理组、规则或统计页面。
| 客户端 | 先看什么 | 记录哪些字段 |
|---|---|---|
| Clash Verge Rev | 连接、日志、代理组或模式页面 | 当前节点、规则命中、连接速度、错误提示 |
| v2rayN | 服务器列表、运行日志、系统代理状态 | 当前配置、连接时间、重试或握手错误 |
| Shadowrocket | 节点、连接记录、日志或测速页面 | 节点、请求目标、连接状态、是否反复重连 |
| v2rayNG | 配置列表、日志、统计或运行状态 | 当前配置、连接错误、上下行流量、测试时间 |
记录时建议使用下面的模板,至少保留直连、代理节点A和代理节点B三组结果:
日期:2026-10-25
设备与网络:
客户端与模式:
测试目标:
节点:
直连/代理:
DNS或规则模式:
首开时间:
丢包结果:
下载第1次:
下载第2次:
下载第3次:
平均或中位速度:
是否出现重连:
结论:
根据结果处理:一次只改一个变量
- 默认网关就有丢包:先重启或更换路由器、靠近无线接入点、暂停后台流量,再重复测试。
- 网关正常、节点地址丢包:记录测试时间并更换同地区或相邻地区节点对照;不要只根据一次ICMP结果断定代理业务不可用。
- 多个节点都慢:先关闭TUN、系统代理或浏览器代理扩展,确认是否存在叠加接管;再检查规则模式是否把不需要代理的流量送入代理。
- 只有首开慢:优先核对DNS解析、规则命中、TLS握手和目标服务器响应;不要只做下载测速。
- 持续下载慢:固定大文件重复三次,比较不同节点和不同时段;若只在晚高峰下降,应把时段写入记录,不要将单次结果当成长期结论。
- 只有一个应用慢:检查该应用是否使用独立代理、QUIC/UDP、IPv6或自己的DNS;再与浏览器通过同一节点访问同一目标做对照。
修改配置前先备份,改动后只保留一个变化。例如先只切换节点,第二轮再只切换模式,第三轮再检查DNS。这样才能判断是“节点变化带来改善”,还是多个改动叠加后的偶然结果。
常见问题
为什么代理客户端延迟很低,下载速度仍然很慢?
延迟只反映一次往返等待时间,不能代表长时间传输能力。请固定同一个大文件,使用同一节点连续下载三次,记录curl的speed_download或客户端平均速度,再与直连和其他节点比较。
直接ping网站域名能判断代理节点速度吗?
通常不能。系统代理模式下ICMP一般不经过代理;TUN使用fake-ip时,域名还可能解析到假地址。应分别ping默认网关和节点服务器地址,并把结果只作为辅助证据,实际速度要用代理下载或应用连接记录判断。
代理客户端只有视频缓冲,网页和下载却正常,先查什么?
先固定视频清晰度,观察持续吞吐和是否反复重连,再查看该应用是否使用独立代理、QUIC/UDP、IPv6或独立DNS。不要只看节点延迟,也不要直接把单个平台的问题判定为所有节点都慢。
多个节点同时变慢,应该先换节点还是改配置?
先做最小对照:暂停后台下载,关闭TUN或系统代理叠加,确认规则模式和DNS配置已加载,再用同一文件测试。若多个节点仍慢,再比较直连与代理的结果,判断本地网络或线路整体问题。
测速时为什么必须固定文件、时间和测试次数?
不同文件、CDN、目标地区和时段会改变结果。固定变量并重复三次,才能减少单次波动;建议保存直连、节点A和节点B的记录,并注明是否发生重连或速度下降。
相关阅读
参考资料
- Microsoft Learn:ping 命令
- Microsoft Learn:pathping 命令
- curl 官方手册(curl.se)
- curl 官方 URL 与代理协议说明(curl.se)
- Linux ping 手册(man7.org)
- mihomo 通用配置文档
- mihomo 入站与 TUN 配置文档
- mihomo DNS 配置文档
- mihomo 策略组配置文档
- mihomo API 文档