网络超时:如何调试?

网络超时:如何调试?

我在尝试从以下位置获取库时遇到网络超时https://rubygems.org我想弄清楚原因。

它似乎只影响从我的家庭网络发出的请求。如果我将计算机连接到不同的网络,我可以从 ruby​​gems 中获取数据,而不会出现问题。

它似乎也有些特定于 ruby​​gems.org - 如果我向不同的 gem 服务器发出相同的请求(https://gems.ruby-china.org),我可以获取而不会超时。

我在获取宝石(运行)时观察了请求/响应bundle --verbose,看到几个成功的请求,接着是一些速率限制错误(429 Too Many Requests),然后在挂起之前又出现了一些成功请求,最终超时。

ss --tcp --processes我同时运行并看到SYN-SENT与该过程相关的稳定重复的状态bundle

State      Recv-Q  Send-Q      Peer Address:Port
SYN-SENT   0       1       [2a04:4e42::514]:https  users:(("bundle",pid=17701,fd=8))
SYN-SENT   0       1       [2a04:4e42::514]:https  users:(("bundle",pid=17701,fd=8))
...

由于我仍在熟悉网络,所以我可能从错误的角度看待这个问题。任何指点都将不胜感激。

答案1

观察rubygems.org 施加的速率限制。 使用数据包捕获和代理来计算请求,查看您的软件是否有损坏,或者 NAT 后面是否有大量超出限制的用户。

通过从 API 请求一些基本内容来收集性能数据(可能https://rubygems.org/api/v1/downloads.json) 定期从互联网上的许多不同主机发送。

存在可以帮助解决此问题的服务。千眼有免费套餐,您可以在您的网络和十几个云端点上启动对其 API 的 Web 测试。路径可视化图表可能会很有启发。

相关内容