Каждому аккаунту на сервере выделено определенное количество процессов-рабочих, обрабатывающих запросы пользователей. Запросы поступают на сервер и становятся в очередь. Легкие запросы обрабатываются быстро, а тяжелые, проблемные — медленно, тормозя продвижение очереди. Когда длина очереди достигает определенной величины, сервер перестает принимать новые запросы, возвращая ошибку 503 (Service Temporarily Unavailable — сервис временно недоступен).
Ниже описаны частые причины возникновения длинной очереди, а также пути решения этой проблемы:
Большие статичные файлы лучше всего передавать напрямую, не используя для этого скрипты. На это есть две причины: во-первых, время работы скриптов ограничено, по его истечению передача файла прерывается; во-вторых, для передачи файла через PHP используется отдельный процесс-рабочий, а значит он перестает участвовать в механизме обработки запросов от пользователей.
Для передачи файлов напрямую, наоборот, задействуется специальный многопоточный процесс, который может обрабатывать множество потоков одновременно, не влияя на скорость загрузки сайта.
Функциональность многих скриптов хранения файлов можно реализовать через правила mod_rewrite в файле .htaccess (например, антилич-систему).
Этого лучше избегать. Если же без такого не обойтись, то необходимо выставить маленький тайм-аут на ожидание ответа и убедиться, что связь с удаленным сервером достаточно хорошая.
Если в PHP-скриптах используются Include-функции, загружающие части движка, расположенные на одном аккаунте, убедитесь, что в них используется локальный путь, а не URL вида «http://…». Наличие URL заставляет сервер делать дополнительный HTTP-запрос — это занимает лишний процесс-рабочий и сильно замедляет загрузку сайта.
Проверьте все компоненты и плагины вашей CMS, отключая их по очереди, и найдите самые тяжелые или испорченные, при работе которых загрузка сайта замедляется. По возможности откажитесь от таких компонентов, либо поищите более быстрый аналог. Также деинсталлируйте все ненужные компоненты, которые вы не используйте или использование которых необязательно.
Если среди mambot'ов присутствуют задания, которые можно перенести в системный cron, лучше всего сделать это. mambot-задания выполняются вместе с запросом пользователя, поэтому загрузка сайта происходит очень медленно, либо вообще не происходит.
Запуск скрипта почтовой рассылки лучше всего расположить в системном cron'е, управление которым находится в контрольной панели. А запуск его назначить на время наименьшей нагрузки на сервер (ночь по московскому времени). При этом следует учитывать ограничения, накладываемые условиями договора-оферты относительно количества писем в час/день и временем работы PHP-скрипта.
При наличии у вас медленных запросов, в папке logs вашего аккаунта создается файл mysql-slow.log. Информация в этом файле обновляется раз в сутки и содержит только самые проблемные SQL-запросы.
Загружаемый ресурс разбит/содержит ссылки на слишком больше число файлов (картинки, таблицы стилей JS-скрипты), которые подгружаются через отдельные запросы. Постарайтесь объединять ресурсы в один файл, где это возможно.
На сайте установлен элемент, который периодически посылает на сервер AJAX-запросы (например, чат). Количество запросов зависит не только от числа посетителей, но и от их привычки открывать несколько вкладок в браузере.
Боты-индексаторы, сканирующие ресурсы сайтов (поисковые системы, Sape и другие).
Использование элементов ресурсов или скриптов на чужих сайтах (ссылки на картинки, скрипты-информеры). Используйте антилич-модули/настройки.
DDoS-атаки.
Если у вас не хватает знаний, вы не хотите самостоятельно исправлять работу скриптов или же просто не хотите этим заниматься, вам стоит обратить ваше внимание на услугу «Премиум-аккаунт», которая создана специально для этого.
Смотрите также: 404, 502, 301 — что это? Главное о кодах состояния сервера