Таймауты сети: как отлаживать?
Я испытываю тайм-ауты сети при попытке получить библиотеки с https://rubygems.org/ и я хотел бы выяснить, почему.
Это только влияет на запросы, сделанные из моей домашней сети. Если я перенесу свой компьютер в другую сеть, я могу без проблем получать данные из rubygems.
Похоже, что это несколько специфично для rubygems.org - если я делаю одинаковые запросы к другому серверу гемов ( 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) на регулярной основе со многих разных хостов в Интернете.
Существуют службы, которые помогают с этим. У ThousandEyes есть бесплатный уровень, вы можете подключить веб-тест к их API в вашей сети и дюжине конечных точек облака. Графики визуализации пути могут быть поучительными.