Я собираюсь вырвать свои волосы на этом. У меня есть приложение rails, размещенное на Heroku, с использованием Zerigo Free для DNS. Приложение доступно по адресу:
Пользователи периодически (примерно 1 из 50 запросов) испытывают чрезвычайно долгое время загрузки (~ 2 мин), и когда я пытаюсь выполнить сортировку, просматривая журналы сервера, их запросы, похоже, не выполняются до конца периода ожидания. Типичное время загрузки сайта составляет около 200-400 мс. Я использую NewRelic, и он не указывает на какие-либо проблемы с загрузкой сервера, хотя он улавливает проблему конечного пользователя с помощью маяка и на этот раз отображается как «Сеть».
Используя Firebug и Chrome devtools, я могу видеть временную шкалу, когда это происходит на моем компьютере, и оба они показывают долгое время ожидания перед любым ответом, который Firebug классифицирует как «DNS-поиск», а Chrome, похоже, не классифицирует. После первого ответа остальная часть сайта загружается очень быстро.
Я собираюсь предположить, что это связано с тем, что ваш DNS-провайдер (zerigo.net) публикует записи IPV6 для своих DNS-серверов. Ваши клиенты Windows и MAC используют DNS-сервер, на котором включен IPV6, но нет возможности подключения IPV6. Это вызывает тайм-аут DNS при попытке доступа к DNS-серверам через IPV6 перед отказом от возврата к IPV4. Попробуйте отключить IPV6 на преобразователе DNS и клиентских машинах и посмотрите, добьетесь ли вы лучших результатов.
Для других, столкнувшихся с этой проблемой, это помогло ее объяснить:
http://tiwatson.com/blog/2011-2-17-heroku-no-longer-using-a-global-request-queue
Heroku не использует глобальную очередь запросов, поэтому один длительный запрос может блокировать быстро выполняющиеся запросы.
Оказывается, проблема заключалась в том, что один из трех циклических IP-адресов, назначенных Heroku, был плохим. Они выяснили это в ответ на мой запрос в службу поддержки. Спасибо всем за ваши предложения о методах и инструментах для борьбы с этим!