Таймауты сети: как отлаживать?

Я испытываю тайм-ауты сети при попытке получить библиотеки с 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 в вашей сети и дюжине конечных точек облака. Графики визуализации пути могут быть поучительными.

Другие вопросы по тегам