Ошибка 500 на виртуальном хостинге "Internal Server Error"
Когда возникает и что такое внутренняя ошибка 500 сервера?
Одна из самых распространенных ошибок, связанных с работой сайта. Она, как правило, возникает из-за владельца услуги хостинга или его интернет-провайдера.
Причинами появления ошибки на виртуальном хостинге могут быть:
- Неверный синтаксис файла .htaccess или наличие в нем неподдерживаемых директив. Чаще всего достаточно закомментировать директиву Options (для этого нужно поставить в начале строки решетку — #), и проблема исчезнет.
Также может помочь замена текущего файла .htaccess на стандартный для вашей CMS.
- Запущено максимальное количество процессов. На услугах виртуального хостинга установлено ограничение в 20 одновременно запущенных процессов (посмотреть все ограничения). Если этот лимит будет достигнут, новый процесс не сможет запуститься и возникнет ошибка.
Такое большое число одновременных процессов может складываться из CRON-заданий, частых подключений с помощью почтовых клиентов по протоколу IMAP, подключения по FTP или других зависших процессов.
Для решения проблемы, вы можете:
- увеличить интервал запуска заданий CRON;- ограничить количество IMAP-соединений в настройках почтового клиента: Ограничение IMAP-соединений;
- проанализировать запущенные процессы самостоятельно или обратившись за помощью к разработчикам сайта.
- Установлены некорректные права на файлы и каталоги сайта. В некоторых случаев корректными правами для каталогов являются «755», а для файлов — «644». Проверьте их правильность и при необходимости измените права на файлы и папки.
- Ошибка в скриптах. Если существует ошибка в скрипте, или при наличии функции, которая не выполняется. Для успешного запуска скрипта функция должна быть верно прописана, поддерживаться сервером и выполняться от используемой версии PHP. Бывают ситуации, когда функция несовместима с определенными версиями PHP. Получить более подробную информацию о той или иной функции можно в интернете.
- Не хватает оперативной памяти. Если в логах вы видите ошибку «Allowed memory size», для устранения ошибки 500 стоит оптимизировать работу скрипта. Вы можете воспользоваться специальными расширениями для анализа производительности скрипта или обратиться за помощью к специалисту, который поработает над его оптимизацией. Если ваш сайт размещен на отдельном физическом или виртуальном сервере, можно попробовать увеличить максимальное использование оперативной памяти на процесс (memory_limit). На шаред хостинге этот параметр обычно не изменяется, но есть возможность перейти на VPS.
Если вам не удалось самостоятельно устранить ошибку 500, обратитесь в техподдержку.
Ошибка 502 на виртуальном хостинге "Bad Gateway"
Ошибка 502 возникает когда Apache работает в связке с Nginx. Запрос от пользователя прошел через NGINX к Apache но тот в свою очередь вернул нулевой результат прокси-серверу NGINX.
Причина возникновения ошибки 502 может быть несколько:
- Дочерний процесс apache не смог обработать поступивший к нему запрос и завершился досрочно. Зачастую это связано с ошибкой в скрипте сайта или нехваткой памяти для выполнения процесса. Начните свой поиск error 502, в таком случае с логов ошибок сайта. Вполне возможно там будет информация, которая привела к возникновению этой ошибки. Но зачастую лог не содержит ничего полезного по этой проблеме, поскольку процесс апач завершился досрочно. Если это так, разбейте свой скрипт на участки, и выполняйте их поочередно. Это должно помочь найти 502 error.
- Процесс Apache завершился по таймауту и не вернул в поток вывода никаких данных. Обычно это связано с длительным выполнением скрипта, либо зацикливанием в нем. Чтоб не получать 502 bad gateway, когда скрипт выполняется длительное время, лучше его запускать из консоли, а в случае если скрипт запускается регулярно, поставить его на CRON.
- Запущено максимальное количество процессов. На услугах виртуального хостинга установлено ограничение в 20 одновременно запущенных процессов (посмотреть все ограничения). Если этот лимит будет достигнут, новый процесс не сможет запуститься и возникнет ошибка.
Такое большое число одновременных процессов может складываться из CRON-заданий, частых подключений с помощью почтовых клиентов по протоколу IMAP, подключения по FTP или других зависших процессов.
Для решения проблемы, вы можете:
- увеличить интервал запуска заданий CRON;- ограничить количество IMAP-соединений в настройках почтового клиента: Ограничение IMAP-соединений;
- проанализировать запущенные процессы самостоятельно или обратившись за помощью к разработчикам сайта.
Если вы столкнулись с единичными случаями возникновения 502 ошибки, можете проигнорировать их.
Если 502 ошибка возникает регулярно, напишите заявку в службу поддержки. В заявке укажите:
- Точное московское время наблюдения проблемы.
- Название сайта, на котором была замечена проблема.
- Если ошибка отображается не сразу, а после определённых действий (добавление изображения, отправка формы с сайта, импорт файлов), подробно опишите порядок действий, по которому мы сможем воспроизвести проблему.
- Если для воспроизведения проблемы необходимо авторизоваться в административной части сайта, предоставьте логин и пароль для доступа.
Ошибка 502 на VPS
Чаще всего на VPS используется связка: Nginx + бэкенд-сервер (Apache, PHP-FPM, Gunicorn, NodeJS). Ошибка 502 возникает в случае, если Nginx не может получить ответ от этих сервисов.
Наиболее частые причины возникновения 502 ошибки:
- Какой-то из сервисов выключен. Необходимо перезапустить веб-сервер Apache, PHP-FPM либо другой сервис, с которым работает Nginx.
- Между Nginx и бэкенд-сервером некорректно настроена связь. Например, Nginx производит обращение к порту 8080, а веб-сервер Apache «слушает» на 8081. В этом случае необходимо скорректировать настройки веб-сервера.
Если вам не удалось самостоятельно устранить ошибку 502, обратитесь в техподдержку.
Ошибка 503 на виртуальном хостинге "Service Temporarily Unavailable"
У каждого аккаунта на сервере хостинга есть определенное количество рабочих процессов, выделенное в соответствии с выбранным тарифным планом. Работа с запросами ведется в порядке очереди, они поступают на сервер, где легкие запросы обрабатываются мгновенно, а тяжелые – медленно. Всякая очередь ограничена тем или иным количеством запросов. Если новый запрос находится за пределами этой границы, принят он не будет, и вместо результата браузер выдаст оповещение “Сервис временно недоступен”. Ошибка может возникнуть из-за превышения лимита на количество PHP-процессов. Согласно техническим ограничениям на тарифных планах виртуального хостинга.
Причины возникновения данной ошибки:
- Зависание скриптов при передаче больших статичных файлов через php. Скрипты работают определенное время, а не постоянно. При завершении времени работы скрипта прерывается передача файла, соответственно, файл не будет передан полностью, а также запрос оставит процесс веб-сервера работать еще длительное время. Устранить ошибку вы сможете посредством следующих шагов:
- Проверить наличие у вас медленных запросов - в папке logs вашего аккаунта создается файл mysql-slow.log. Информация в этом файле обновляется раз в сутки и содержит только самые проблемные SQL-запросы.
- Если в PHP-скриптах используются Include-функции, загружающие части движка, расположенные на одном аккаунте, убедитесь, что в них используется локальный путь, а не URL вида «http://…». Наличие URL заставляет сервер делать дополнительный HTTP-запрос — это занимает лишнее время и сильно замедляет загрузку сайта.
- Проверить все компоненты и плагины вашей CMS, отключая их по очереди, и найдите самые тяжёлые или испорченные, при работе которых загрузка сайта замедляется. По возможности откажитесь от таких компонентов или поищите более быстрый аналог.
- Большое количество запросов к серверу. Причин возникновения таких запросов несколько:
- Загружаемый ресурс разбит/содержит ссылки на слишком больше число файлов (картинки, таблицы стилей JS-скрипты), которые подгружаются через отдельные запросы. В этом случае следует объединить ресурсы в один файл, где это возможно.
- DDoS-атаки, флуды, спамы в комментарии также могут вызывать большое количество запросов. В случае DDoS-атаки необходимо определить ее тип, и, согласно ее уровню, предпринять действия по устранению, воспользовавшись услугой анти-ддос защитой на уровнях L3-L7.
Ошибка 504 на виртуальном хостинге "Gateway timeout"
Эта ошибка может возникнуть в случае, если для Nginx был превышен лимит на время ответа сайта (по умолчанию 30 секунд). Как правило, среднее время загрузки сайта не должно превышать 1-3 секунды.
Если раньше такой ошибки не наблюдалось, обратитесь в техподдержку.
Если скрипты вашего сайта должны выполняться свыше 30 секунд (например, выгрузка базы данных или обмен с 1С), вы можете обратиться к сайту по порту 8081 (для ISPmanager), минуя веб-сервер Nginx.
Если этот вариант вам не подходит, рекомендуем перенести ваш сайт на VPS, на котором доступна гибкая настройка сервера, в том числе и лимитов. Для этого закажите услугу «VPS» .
Ошибка 504 на VPS
Эта ошибка может возникнуть в случае, если для Nginx был превышен лимит на время ответа сайта (по умолчанию 30 секунд). Как правило, среднее время загрузки сайта не должно превышать 1-3 секунды. Чтобы избавиться от этой ошибки, попробуйте повысить время ожидания веб-сервера Nginx.
Если скрипты вашего сайта должны выполняться свыше 30 секунд (например, выгрузка базы данных или обмен с 1С), вы можете обратиться к сайту по порту 8081 (для ISPmanager), минуя веб-сервер Nginx.
Также ошибка 504 может возникать, когда Nginx используется как прокси-сервер для Apache. В этом случае нужно настроить параметры времени ожидания при проксировании.
Добавьте следующие строки в блоке server в ваш файл nginx.conf:
#server { #... proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; #... #}
Затем перезапустите Nginx с помощью команды service nginx reload
Если решить проблему не удалось, обратитесь в техподдержку.