![某些客户端系统的吞吐量存在巨大问题,但在另外使用 VPN 时不会出现问题](https://linux22.com/image/785191/%E6%9F%90%E4%BA%9B%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%90%9E%E5%90%90%E9%87%8F%E5%AD%98%E5%9C%A8%E5%B7%A8%E5%A4%A7%E9%97%AE%E9%A2%98%EF%BC%8C%E4%BD%86%E5%9C%A8%E5%8F%A6%E5%A4%96%E4%BD%BF%E7%94%A8%20VPN%20%E6%97%B6%E4%B8%8D%E4%BC%9A%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98.png)
我偶尔会在通过网络(互联网)访问我的某个系统时遇到严重的性能问题。我试图缩小问题的原因,实际上取得了一些进展,但我无法继续下去,因为我对底层网络技术了解不多。这就是为什么我需要一些帮助、想法、提示……
该系统是一个私人 VPS(由服务提供商在 KVM 基础上运营)。它提供一些服务,比如网络和电子邮件,我从未观察到系统达到任何限制,比如内存或处理能力。我有时会观察到与正常请求(10mb/秒)相比低得可笑的下载速度(~80kb/秒)。这个问题只在访问该系统的某些客户端系统上观察到,在其他系统上则不会。如果问题真的出现,那么它是可重现的。这个问题似乎与本地网络上行链路、系统负载、一天中的时间、请求资源的大小等因素无关。据我所知,它也与高级协议无关,我看到同样的问题出现在http
、https
和imaps
(scp
如果它出现在该客户端系统上的话)。为了进行测试,我还用 NGINX 安装替换了 apache http 服务器 - 行为相同。这个问题与客户端使用的操作系统无关。
现在,我第一次能够在我的一个开发系统上重现该问题,并得到了一些令人惊讶的见解:
我在某个地方遇到了这个问题,但在其他地方没有遇到过(!)。使用本地网络上行链路(WiFi 和 DSL)时很有趣,但使用手机进行上行链路时也同样如此。然而问题确实不是当我启用 VPN 隧道时,使用相同的上行链路路由会发生这种情况!因此和VPN 我立即看到了 1000 倍的改进。无论网络路由如何。这里的重要细节:我连接的 VPN 对等体位于该系统上,我自己操作 VPN 服务(wireguard)。这确实对路由产生了影响里面服务器系统。
如果没有 VPN,我会遇到大量数据包丢失(我可以看到使用tcpdump
和 的wireshark
情况)。启用 VPN 后,我不会看到任何数据包丢失。当然,VPN 在某些情况下可以解决数据包丢失问题,但吞吐量的大幅提高告诉我,这并不是唯一的好处。区别似乎在于对等系统(服务器)内部的本地路由(数据包通过不同的接口传出),或者可能是某种形式的网络边界问题,这取决于数据包的大小和内容(我对这些细节知之甚少)。
您可以看到我在这里不知所措。我想了解我可能遇到的问题。这样我就可以向提供商支持人员寻求帮助(他们确实拥有深入的知识,几个月前我曾与一位支持人员讨论过另一个问题,他的技能和投入的时间给我留下了深刻的印象)。
我可以进行更多测试来进一步缩小问题范围吗?
有人知道这个问题的真正原因是什么吗?