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

Как устранить многие неудачные загрузки страниц?

У меня было несколько случаев, когда домашняя страница одного из моих сайтов не загружалась в браузере. Сайт работает на django / fastcgi / nginx.

Это было сложно воспроизвести, поэтому, пытаясь понять частоту этой проблемы, мы добавили изображения размером 1 x 1 пиксель в тело домашней страницы, которые обслуживаются так же, как и html домашней страницы. Затем мы написали скрипт, который сканирует журналы nginx и проверяет каждый запрос домашней страницы, если запрос на изображение размером 1px произошел с того же IP-адреса в течение 10 секунд после запроса домашней страницы.

Результаты были шокирующими - около 30% (!!) запросов на домашнюю страницу не содержали запроса изображения в непосредственной близости, и это после фильтрации запросов от очевидных поисковых роботов и т. Д. Многие из таких запросов даже из высококачественных источников. , то есть посетители, которые с большой вероятностью захотят по крайней мере увидеть отображаемую домашнюю страницу перед тем, как покинуть сайт ...

Поэтому я сильно подозреваю, что существует какая-то техническая проблема, которая приводит к сбою многих запросов.

Как мне решить эту проблему?

Я не знаком с nginx, но похоже, что это проблема с максимальным количеством подключений.

Быстрый поиск в Google сказал мне, что «worker_connections» используется для установки количества одновременных подключений, разрешенных worker_process. Вы всегда можете попробовать удвоить или утроить текущее число.

Как я уже сказал, я совершенно не знаком с nginx, поэтому я мог бы ошибиться в этом, но попробовать стоит.

Трудно дать конкретный совет без более подробной информации, но вот несколько общих комментариев, которые могут быть полезны:

  • Попробуйте использовать в своем чеке время более 10 секунд. Возможно, ваша страница иногда загружается / отображается дольше 10 секунд, что вызывает ложные срабатывания. Хотя загрузка страницы более 10 секунд - это еще одна проблема, которую вам следует решить.
  • Попробуйте использовать тестовый маркер сайта, например ApacheBench (устанавливается с Apache) или Siege, чтобы проверить, сможете ли вы воспроизвести проблему. Например, с ApacheBench я бы посмотрел на поля «Неудачные запросы» и «Ошибки записи», которые должны быть равны 0 для хорошо работающего сервера / приложения. Попробуйте протестировать локально на сервере и на удаленном клиенте, а также с разными уровнями параллелизма.
  • Предыдущий шаг также должен дать вам приблизительную обслуживающую способность вашей системы. Убедитесь, что ваш обычный трафик не приближается к этому уровню. Если вы можете обслуживать не более 10 запросов в секунду, это, скорее всего, приведет к отброшенному запросу или ошибке.
  • Проверьте различные журналы на наличие явных сообщений об ошибках или предупреждениях (nginx, база данных, приложение, система и т. Д.). Включите их, если они не используются. Если вы не видите никаких соответствующих сообщений, попробуйте временно увеличить уровень ведения журнала на несколько дней.
  • Изучите мониторинг системы с помощью чего-нибудь вроде Zabbix или Nagios. Есть много систем на выбор. Видеть этот вопрос или этот вопрос для нескольких хороших примеров. Они не скажут вам, где находится ваша проблема (обычно), но неоценимы при отладке проблем и, как только вы обнаружите проблему, сообщая вам, когда они возникают.
  • Если вы уверены в проблеме, но не можете ее найти, попробуйте изменить параметры и повторить тестирование. Попробуйте разные страницы, которые загружают или не загружают разные вещи. Попробуйте динамические / статические страницы. Попробуйте lighttpd / Apache вместо nginx (хотя бы для тестирования).
  • Если вы по-прежнему ничего не можете найти, убедитесь, что это проблема. Ваш метод тестирования может указывать на другую проблему, чем вы думаете (например, медленная загрузка страниц или клиенты, отключающие изображения).