Назад | Перейти на главную страницу

HTTP-запрос иногда не достигает сервера. Зачем?

Мы размещаем наш веб-сервис на выделенном сервере. Иногда (я бы сказал, 1 из 20) ответ от сервера не приходит. Это заставляет браузер возвращаться с ошибкой тайм-аута.

Важная деталь: в этом случае запрос не регистрируется Apache. Сервер не загружен, осталось много свободной памяти и мощности процессора.

Я проанализировал проблемный случай с помощью утилиты tcpdump. Это «хорошие» и «плохие» сеансы, отслеживаемые tcpdump. Запрос одинаковый в обоих экспериментах. Хорошо - сервер возвращает ответ. Плохо - нет ответа, ошибка тайм-аута.

Вы понимаете, почему проблема возникает из этих данных? Как я могу двигаться дальше, чтобы приблизиться к источнику ошибки?

Я заменил свой реальный IP-адрес на 123.45.67.890

---- Bad ----
12:23:36.366292 IP 123.45.67.890.61749 > myserver.superbservers.com.www: S 2125316338:2125316338(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:23:39.362394 IP 123.45.67.890.61749 > myserver.superbservers.com.www: S 2125316338:2125316338(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:23:45.365567 IP 123.45.67.890.61749 > myserver.superbservers.com.www: S 2125316338:2125316338(0) win 8192 <mss 1460,nop,nop,sackOK>
--------

---- Good ----
12:27:07.632229 IP 123.45.67.890.63914 > myserver.superbservers.com.www: S 3581365570:3581365570(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:27:10.620946 IP 123.45.67.890.63914 > myserver.superbservers.com.www: S 3581365570:3581365570(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:27:10.620969 IP myserver.superbservers.com.www > 123.45.67.890.63914: S 2654770980:2654770980(0) ack 3581365571 win 5840 <mss 1460,nop,nop,sackOK,nop,wscale 6>
12:27:10.838747 IP 123.45.67.890.63914 > myserver.superbservers.com.www: . ack 1 win 4380
12:27:10.957143 IP 123.45.67.890.63914 > myserver.superbservers.com.www: P 1:213(212) ack 1 win 4380
12:27:10.957152 IP myserver.superbservers.com.www > 123.45.67.890.63914: . ack 213 win 108
12:27:10.965543 IP myserver.superbservers.com.www > 123.45.67.890.63914: P 1:630(629) ack 213 win 108
12:27:10.965621 IP myserver.superbservers.com.www > 123.45.67.890.63914: F 630:630(0) ack 213 win 108
12:27:11.183540 IP 123.45.67.890.63914 > myserver.superbservers.com.www: . ack 631 win 4222
12:27:11.185657 IP 123.45.67.890.63914 > myserver.superbservers.com.www: F 213:213(0) ack 631 win 4222
12:27:11.185663 IP myserver.superbservers.com.www > 123.45.67.890.63914: . ack 214 win 108
--------

Подробности об услуге.

Это служба сводки погоды. Он написан на Perl при поддержке MySQL. Скрипт использует несколько модулей (из CPAN и нашего собственного).

Код относительно прост. Скрипт загружает погоду с другого сервера, конвертирует формат данных и возвращает ответ XML. Погода кешируется в MyISAM DB. Существует база данных местоположений мира (INNODB), которую также можно запросить через скрипт.

Хостинг: Superb Хостинг ОС: Ubuntu

Можете ли вы попробовать свой запрос, используя только IP-адреса? Если да, это может помочь сузить проблему.

Все ли запросы поступают из одного и того же места, в котором возникает проблема? Если да, попробуйте другое место, например, ноутбук в Starbucks или что-то в этом роде. Если это происходит более чем из одного места, с использованием разных браузеров, на очень простой странице без AJAX или сложного Javascript, это ценная информация.

Если использование IP-адреса работает надежно, то, скорее всего, это DNS. Знание используемого доменного имени может помочь сузить круг вопросов.

Попробуйте использовать tcpdump или WireShark для мониторинга сетевого трафика. Таким образом, по крайней мере, вы будете знать, есть ли проблема с сетью. Т.е. проверьте, попадает ли запрос в машину вообще.

Кроме того, по умолчанию большинство браузеров имеют ограниченное (2) количество подключений к одному и тому же серверу. Если на вашей странице есть объекты javascript, которые «забывают» закрыть соединение и т. Д., Возможно, браузер никогда не отправляет запрос.

Я бы пошел с Майклом Гаффом, а затем вложил немного денег в хостинговую компанию - такого рода проблемы с трафиком очень легко возникают из-за неисправных патч-панелей, сетевых адаптеров, проблем с драйверами Nic или плохой кабельной проводки, среди тысячи других вещей инфраструктуры.

Я рассчитываю на то, что вы попробовали это из разных мест (или получили отчеты из других мест с теми же проблемами) и получили ту же проблему независимо от того, чтобы мы могли исключить проблему на вашей стороне, верно?

Я фанат оборудования, поэтому склоняюсь к сбоям оборудования как к причине странных проблем с программным обеспечением, сетью и массового уничтожения в целом.

Проблема заключалась в большом количестве открытых TCP-соединений, из-за чего время от времени прерывалось новое соединение.