我在尝试从以下位置获取库时遇到网络超时https://rubygems.org我想弄清楚原因。
它似乎只影响从我的家庭网络发出的请求。如果我将计算机连接到不同的网络,我可以从 rubygems 中获取数据,而不会出现问题。
它似乎也有些特定于 rubygems.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 测试。路径可视化图表可能会很有启发。