WeGame下载慢到怀疑人生,最后发现问题出在自家路由器上
下载按钮就在那,但我点了半小时才反应过来
事情是这样的,上周五晚上我寻思着好久没跟朋友开黑了,打算装回 WeGame 拉个英雄联盟打两把。打开官网找到下载页,点本页下载按钮,好家伙,浏览器弹了个下载框,速度那叫一个惨烈,3MB/s 都不到,而且还在往下掉。我盯着那个数字从 2.7 掉到 1.1,心里已经开始骂人了。我家是 500M 联通宽带,平时 Steam 下游戏能跑到 60MB/s,这 WeGame 装个客户端才几百兆,按这速度得等到天亮。
我第一反应是 WeGame 服务器辣鸡,毕竟网上抱怨的人不少。但转念一想,Steam 国区、Epic、暴雪战网都好好的,凭什么就它一个慢成这德行。于是我开始排查,先关了路由器上的 QoS,没用;把电脑的 DNS 改成 114 和 阿里,还是没用;又试了手机开热点给电脑,速度居然能到 20MB/s。这就离谱了,同一台电脑走手机网络就快,走宽带就慢,那问题肯定不在 WeGame 那边,八成是我自己家里这摊子事。
这时候我才想起来,上个月搬家时图省事,把光猫出来的网线直接怼在路由器 WAN 口上,路由器是那种老掉牙的百兆口双频机器,当时还觉得够用。结果我宽带是 500M 的,百兆口实际峰值也就 95Mbps 左右,换算过来顶多 11MB/s。但问题是现在连 1MB/s 都跑不到,这显然不是单纯的瓶颈问题。
路由器老化比你想的更坑
我翻了翻朋友给我的一篇旧帖子,里面提到一个关键点:路由器用久了,闪存和内存的碎片会越来越多,尤其是那些带 USB 共享或者开了不少插件功能的路由器,NAT 会话表会越来越乱,连接数一多就容易丢包和限速。我这台路由器用了差不多四年,当年买的时候支持 802.11ac,但 CPU 主频只有 800MHz 左右,现在跑 WeGame 这种需要频繁建立 TCP 长连接的应用,处理不过来就会开始随机丢弃数据包。
我在路由器后台看了一眼连接数,好家伙,加上手机、电视、智能音箱,家里同时在线差不多二十个设备。光猫拨号模式下,路由器就变成一级 NAT,所有设备共享一个公网 IP,每个新连接都要过一遍 NAT 转换,CPU 扛不住就开始丢弃 SYN 包,TCP 重传率直接飙到 15% 以上。这数字平时看不出来,因为你刷网页、看视频都是短连接,重传一次也就多等几十毫秒,感觉不明显。但 WeGame 下载要求稳定连续传输,一旦丢包,TCP 拥塞窗口就直接减半,速度自然就崩了。
我试着把路由器恢复出厂设置,然后只接了一根网线给电脑,其他设备全部断开。这下速度上来了,能稳定在 9MB/s 左右,虽然还是没跑满 500M,但至少能用了。可问题是家里不可能只给电脑用网,电视不看、手机不上,这不现实。所以问题回到了原点:路由器本身处理能力不够,多设备一并发起连接时就当场暴毙。
换了个路由器,速度从 3MB 到 45MB
彻底死心之后,我决定换个路由器。也没买特别贵的,挑了一台支持 WiFi6 的入门款,CPU 双核 1GHz 以上,内存和闪存都翻了两三倍,最关键的是 WAN 口是千兆的。我把家里所有设备重新连上,再把 WeGame 下载任务重新点了一遍本页下载按钮。这次速度直接飙到 45MB/s 左右,那天下载包一共 1.2GB,也就二十来秒,我还没来得及倒杯水就下完了。
这里有个细节得提一下,新路由器到手后别急着接网线,先去后台把固件升级到最新版,然后关闭 IPv6 防火墙的 SPI 过滤,有些路由默认开启的流控功能,像什么智能限速、游戏加速,在下载场景下反而会限制单线程速度。WeGame 下载器默认走 HTTP 多线程,但如果你开了 QoS 并且把 WeGame 的进程识别成普通流量,它就会给你分配一个很低的上限。我把这些全部关掉,让路由成为纯粹的二层转发设备,速度才真正释放出来。
另外我还发现一个事,用网线直连比 WiFi 稳定太多。新路由器支持 WiFi6,但我的电脑网卡还是老款的 WiFi5,5GHz 下实测能跑 60MB/s 左右,但延迟有波动。WeGame 下载时对延迟不敏感,但断流会导致重连,所以我还是拉了一根六类网线到书桌底下。你要是住老房子不方便布线,建议至少保证路由器跟电脑之间没有承重墙,或者用电力猫网桥凑合也行,但速度会打折。
软件层面的优化,别忽略系统设置
换完路由以后本来以为万事大吉,结果过了两天朋友来我家玩,自己电脑也装了 WeGame 下载,速度再次慢成狗。这次我把他的电脑拿过来排查,发现他的网卡驱动里默认开启了 TCP 校验和卸载和流量分载,这两个功能在部分老网卡上有 bug,会导致接收端校验失败,然后网卡疯狂请求重传。解决方案很简单,在网卡高级设置里把 IPv4 校验和卸载关掉,再把接收端缩放改成禁用。
然后我还顺手检查了 Windows 的服务列表,把 Background Intelligent Transfer Service (BITS) 和 Windows Update 的延迟下载都关了。这俩服务有时候会抢占带宽,尤其 BITS 会以空闲优先级下载补丁,虽然平时看不出来,但 WeGame 同时跑的时候,两者会互相争抢 TCP 连接池的空闲端口,导致下载速率被拉低。另外 Windows 默认的最大并发连接数限制是 10,某些精简版系统会改到 4,WeGame 的多线程下载可能就因为这个受挫。打开命令行,用 netsh int tcp set global autotuninglevel=normal 把接收窗口自动调节级别设成正常,然后再用 netsh int tcp set global rss=enabled 开启接收侧扩展,这两条命令对网速提升有奇效。
还有一个小坑,如果你电脑装了 360 或者腾讯电脑管家这类安全软件,它们自带的流量监控功能可能会拦截或者重置 WeGame 的部分 HTTP 请求,导致下载任务频繁重试。我朋友那台电脑就装了一个什么电脑管家,点本页下载按钮后根本没弹出完整下载框,而是被它的下载工具劫持了,速度直接限制在 1MB/s。解决办法就是卸载这些管家,或者最简单粗暴的,卸完就没事了。
检测自己的网络到底哪里是瓶颈
如果你也遇到类似情况,别急着骂 WeGame,先按我说的排查一遍。第一步,拔掉路由器,把网线直连电脑和光猫,然后重新点本页下载按钮,看看速度有没有提升。如果直连后速度正常,那问题就在路由器或者中间线路;如果直连也慢,那就试试换个 DNS,或者用手机热点交叉测试。
第二步,看光猫指示灯和后台状态,登录光猫的管理页(一般地址是 192.168.1.1,账号密码在设备背面贴纸上),找到网络状态,看光信号功率是否在正常范围内。如果光衰小于 -25dBm,那就是接头松动或者光纤折弯,打电话给运营商让他们上门处理。我有个同事家里就是光纤皮线被门夹断了,光功率 -28dBm,虽然能上网但速度极不稳定,换条尾纤就好了。
第三步,用网线连电脑后,在命令行里跑一下 ping 网关和公网 IP,先 ping 192.168.1.1 连续 50 次,看响应时间和丢包率,如果延迟超过 5ms 或者有丢包,说明本地局域网有问题;然后再 ping 一下百度,如果延迟超过 30ms 或者抖动大,说明运营商骨干网高峰期拥塞。这个测试能帮你把问题定位到具体层段,我自己的经历就是连路由器 ping 的时候丢包率 2% 左右,换了路由器以后变成 0%,这才找到真凶。
个人经验总结,别再瞎折腾
说回 WeGame 本身,它就是个普通下载器,没有那么多黑魔法。官方服务器虽然有时候抽风,但绝大多数情况下问题出在用户自己的网络链路上。我以前还试过改 HOSTS 文件把下载域名指到其它 CDN 节点,结果不但没用,还因为 HTTPS 证书校验失败导致下载直接失败。后来学乖了,只要保持系统干净、路由器处理能力足够、网卡驱动正常,点本页下载按钮基本都能满速。
最后提醒一句,如果以上都试了还是慢,那就换一个时间段再下。运营商的上联端口在晚上 8 点到 11 点之间会出现拥塞,可能整个小区共享的带宽就那么几十 G,大家都刷视频打游戏,你一个人抢不到多少也正常。我之前有次凌晨三点起来下游戏,速度直接拉满 70MB/s,那才叫真正的满血带宽。别在大伙都在上网的时候死磕,真不是 WeGame 的锅。