У нас сайт с высокой посещаемостью, на пике он 1000
одновременных пользователей, и как минимум 100
пользователей одновременно. В среднем это 40,000
к 100,000
визит в день. Проблема в том, что иногда он загружается очень медленно (мы назвали этот раз как время бедствия :)), в то время, когда мы пытаемся загрузить сайт с Firefox
, это показывает waiting...
(Я пробовал это со многими провайдерами по всему миру)
Мы мониторим сервер на катастрофа раз, CPU load
, Memory Usage
нормальные. Также медленный журнал запросов MySQL
нет ни одного запроса до 1 sec
. Apache
ошибок нет. iotop
не показывает ничего, что вызывает эту катастрофу.
Очень интересно, что время бедствия и пиковые нагрузки никак не связаны. Иногда катастрофа случается в 300
одновременный пользователь и другое время разные. Я не могу найти между ними никакой связи.
Как я могу отследить пакеты во время аварии? Я хочу знать это катастрофа ошибка нашего центра обработки данных (например, восходящий поток или брандмауэр) или ошибка нашего сервера (например, Apache
конфигурация, веб-приложение или что-то еще, чего я не знаю).
Для получения дополнительных данных просто добавьте комментарий, затем я редактирую свой вопрос, чтобы предоставить данные, на которые вам нужно ответить.
Если вы используете Linux, вы можете использовать tcpdump
, например:
$ tcpdump dst port 80
Но я не думаю, что это сильно поможет. Я бы постарался исключить как можно больше переменных. Моя первая мысль, что это может быть проблема с сетью.
Попробуйте создать журнал Apache с указанием времени ответа, например:
LogFormat "\"%{%Y-%m-%d %H:%M:%S}t\" %V %m \"%U\" \"%q\" %{Content-Type}o %s %B %O %D" responsetime
CustomLog "/var/log/apache2/responsetime.log" responsetime
Затем попробуйте подключиться к веб-серверу с машины / сервера на том же коммутаторе.
Если это кажется нормальным, попробуйте использовать что-нибудь вроде time wget http://localhost/index.html -q --output-document=/dev/null
сделать это на той же коробке.
Количество одновременных пользователей / посещений не имеет ничего общего с мощностью / производительностью системы - все зависит от одновременных подключений и того, что делают эти запросы.
Добавление времени ответа на запрос в журнал вашего сервера было бы началом - если они не отражают проблему, скорее всего, проблема в сети. Я заметил, что вы не ссылаетесь на журналы своего веб-сервера в своем вопросе - вы их проверяли?
Вы считаете, что у вас большие объемы трафика, и ваш вопрос подразумевает, что у вас только один сервер. Зачем? (несколько серверов усложнили бы эту специфику, такую как распределение нагрузки, но также упростили бы большую часть диагностики, однако это не повлияло на производительность и доступность).
Отслеживание количества подключений и их состояние также предоставляет важные данные для диагностики проблемы.
Как я могу отслеживать пакеты во время аварии?
С программой захвата пакетов - она может быть запущена где угодно, от клиента до сервера. Я использую wirehark (доступен в Linux, MSWindows и других)
Было бы полезно, если бы вы упомянули, какую версию / MPM использует ваш сервер и на какой ОС он работает.