代理速度很慢怎么排查?按这套顺序定位问题
简答:代理速度很慢时,先不要急着换订阅或修改一堆参数。先用同一个目标地址做直连与代理对比,再用 curl 记录 DNS、TCP、TLS、首包和总耗时,最后交叉测试节点、时间段和目标网站。这样通常能判断问题更接近本地网络、代理节点、线路拥塞、DNS,还是目标网站本身。
定义:代理速度慢是指代理连接后出现连接建立慢、首字节等待久、持续下载速率低、视频缓冲或间歇性超时等现象,不能只用一次 Ping 延迟判断。
先试这一步:固定目标,做直连和代理对照
先选一个你确实需要访问的 HTTPS 页面或公开测试文件,记录测试时间、网络方式、客户端、节点、协议和目标地址。不要同时更换节点、DNS、TUN 和规则,否则无法判断是哪一环发生变化。
| 测试项 | 怎么做 | 主要看什么 | 下一步 |
|---|---|---|---|
| 直连基线 | 关闭系统代理或客户端后访问同一目标 | 页面是否正常、首包是否明显变慢 | 直连也慢,先查本地网络或目标站 |
| 代理请求 | 使用同一目标、同一时间测试代理 | 连接时间、首包时间、总耗时 | 只代理请求慢,重点查节点、线路和协议 |
| 不同节点 | 每次只更换节点,其他条件不变 | 延迟、首包和下载速度是否同步变化 | 只有个别节点慢,优先固定较稳定节点 |
| 不同目标 | 测试两个不同域名或服务 | 是否只有一个网站慢 | 单站点慢时检查目标站、CDN 或地区响应 |
下面的命令适用于 Windows PowerShell、macOS 和 Linux。将 https://example.com/ 换成你有权限访问的目标地址;将 PROXY_URL 换成客户端实际提供的 HTTP 或 SOCKS 代理地址,不要把账号密码直接写进命令历史。
curl -L -o /dev/null -sS --connect-timeout 15 --max-time 60 -x "$PROXY_URL" -w "dns=%{time_namelookup}s tcp=%{time_connect}s tls=%{time_appconnect}s ttfb=%{time_starttransfer}s total=%{time_total}s speed=%{speed_download}B/s code=%{http_code}\n" "https://example.com/"
curl 官方文档说明,--proxy 用于指定代理,time_namelookup、time_connect、time_appconnect、time_starttransfer 和 time_total 分别可用于观察解析、连接、TLS、首字节和总耗时。可参考 curl 官方命令行手册。
根据指标判断:到底是哪一段慢
- DNS 时间明显偏高:先检查客户端是否接管 DNS、系统 DNS 是否频繁超时,以及 IPv4 和 IPv6 是否走了不同路径。不要只因为更换 DNS 后一次测试变快,就认定线路已经改善;至少用同一目标重复测试。
- TCP 连接时间高:可能与本地网络丢包、节点端口拥塞、路由绕行或节点不可达有关。先切换到同地区的另一个节点,并保留原节点结果。
- TLS 已建立但首字节很慢:连接本身不一定是主要问题,可能是代理出口到目标站的路径、目标站处理时间或服务端限流。浏览器性能面板也可以查看 DNS、TCP、TLS 和响应开始时间;这些指标的定义可参考 MDN Navigation Timing 文档。
- 首字节正常但下载速度低:重点检查节点带宽、并发连接、下载任务数量、协议传输方式和目标站限速。先暂停其他下载与视频任务,再用同一文件重复测试。
- 数值时快时慢:记录至少三次结果,比较不同时间段、Wi-Fi 与有线网络、IPv4 与 IPv6。单次最快结果不能代表稳定速度。
TTFB,也就是首字节时间,包含请求开始到收到第一批响应数据的时间,并可能受到 DNS、TCP、TLS 和服务端处理影响;因此“Ping 很低但网页仍慢”并不矛盾。相关定义可查看 MDN 对 TTFB 的说明。
Windows、macOS 和 Linux 的基础网络检查
Windows
在 PowerShell 或命令提示符中执行:
ping -n 20 example.com:观察延迟波动和是否出现请求超时。Ping 只代表 ICMP 探测,不等于真实网页或下载速度。tracert /d example.com:观察到目标的大致路径。Microsoft 文档说明,tracert会逐步增加 TTL 来显示路径,某些路由器不返回超时报文时出现星号并不一定代表最终连接失败。参考 Microsoft Learn 的 tracert 文档。curl.exe -I --connect-timeout 15 https://example.com/:确认 HTTPS 请求是否能在合理时间内建立。
macOS 或 Linux
打开终端执行:
ping -c 20 example.com:记录平均延迟、最大延迟和丢包情况。traceroute -n example.com:观察路径中是否存在明显波动或连续超时。curl -I --connect-timeout 15 https://example.com/:确认目标站的 HTTPS 响应。
如果直连测试正常、代理测试异常,再在客户端日志中查看当前节点、规则命中、DNS 请求和连接错误。若启用了 TUN,暂时切换到系统代理模式进行对照;若切换后恢复,重点检查 TUN、路由、DNS 或 IPv6,而不是直接判断节点带宽不足。
常见症状与处理动作对照表
| 症状 | 优先检查 | 处理动作 |
|---|---|---|
| 所有网站都慢 | 本地 Wi-Fi、系统代理冲突、DNS、节点负载 | 改用有线或手机热点对照,关闭重复代理,重新测试 |
| 只有一个网站慢 | 目标站、CDN、地区出口或会话状态 | 更换另一个目标验证,不要马上修改全局配置 |
| 网页打开慢但下载尚可 | DNS、TLS、首包、规则分流 | 用 curl 分解时间,检查是否走错规则或重复解析 |
| 下载开始快,随后变慢 | 节点带宽、并发、连接池或目标站限速 | 暂停其他任务,降低并发,换节点后重复测试 |
| 间歇性超时 | 丢包、IPv6 路径、MTU、无线干扰 | 对比 IPv4/IPv6、Wi-Fi/热点,并检查客户端日志 |
不要把节点延迟直接等同于下载速度。路由追踪只能帮助观察路径和部分延迟,不能单独证明某一跳就是故障点;需要结合真实代理请求、丢包和业务结果判断。
提交问题或更换线路前,先整理这份记录
- 记录测试日期和时间、所在地区、运营商或网络类型。
- 固定一个目标 URL,并分别测试直连和代理。
- 记录节点地区、协议、客户端模式、是否启用 TUN、DNS 模式和 IPv4/IPv6 状态。
- 保存三次 curl 输出:DNS、TCP、TLS、TTFB、总耗时、HTTP 状态码和下载速度。
- 补充 ping 和 traceroute/tracert 结果,隐藏订阅地址、令牌、账号、Cookie 和完整出口信息。
- 只在确认问题集中于某个节点或某条线路后,再联系服务方核查节点负载、带宽、并发限制、计费状态或线路变更;客户端文档不能证明这些商业条件。
如果换网络、换节点和换目标后只有某个节点持续异常,可以把它标记为“待服务方核查”,而不是直接下结论。若所有节点都慢,优先回到本地网络、DNS、系统代理冲突、TUN、MTU 和 IPv6 路径继续排查。
常见问题
代理能连接但网页打开很慢,应该先换节点吗?
先不要直接换节点。先用 curl 记录 DNS、TCP、TLS、首字节和总耗时,再用同一目标测试另一个节点。如果只有一个节点的连接或首包明显变慢,再考虑固定其他节点并保存对照结果。
Ping 延迟很低,为什么下载速度还是慢?
Ping 主要反映 ICMP 往返延迟,不能代表代理协议、TLS、目标站响应或持续下载带宽。应使用真实代理请求测试首包和下载速度,并检查并发、节点负载及目标站限速。
tracert 或 traceroute 出现星号,是不是线路一定坏了?
不一定。部分路由器不会返回 TTL 超时报文,因此中间跳出现星号并不等于最终目标不可达。要结合最终请求是否成功、丢包、总耗时和业务表现判断。
网页慢、视频卡和下载慢,需要用同一种方法排查吗?
不完全相同。网页重点看 DNS、TLS 和首字节;视频还要看持续吞吐和缓冲;下载要看稳定速度、并发和目标站限速。建议固定各自的目标和测试方式,不要用单一 Ping 结果代替全部判断。
什么时候应该联系服务方或更换线路?
当你已经完成直连对照、多个节点测试、不同网络测试,并确认问题稳定集中在某个节点或线路时,再提交脱敏记录。若所有节点和目标都慢,应先排查本地网络、客户端模式、DNS、MTU 和 IPv6。
相关阅读
参考资料
- curl 官方命令行手册(curl.se)
- MDN Navigation Timing 与网络阶段耗时
- MDN:Time to First Byte(TTFB)
- Microsoft Learn:tracert 命令