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

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. Существует база данных местоположений мира (INNODB), которую также можно запросить через скрипт.

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

решение1

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

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

решение2

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

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

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

решение3

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

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

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

решение4

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

Связанный контент