Вредоносное ПО (malware) - это назойливые или опасные программы,...
![Лучшие утилиты для удаления вирусов и вредоносных программ](https://i2.wp.com/webhelper.info/images/danger.jpg)
Ошибка 504 Gateway Timeout - причины возникновения и способы устранения - 4.6 out of 5 based on 15 votes
Ошибка 504 - что она означает, почему возникает и как от нее избавится, эти моменты подробно рассмотрены в данной статье. Я надеюсь ознакомившись с ними вы сможете предпринять определенные действия и избавиться от данной ошибки возникающей на вашем сайте.
Ошибка 504 Gateway Timeout означает истечение времени прохождения через шлюз. Пользователь может увидеть данный код ошибки в том случае, если сервер, работая в качестве прокси-сервера или шлюза, обратился к серверу, стоящему выше по иерархии, с запросом, но не получил вовремя ответ.
Сервера, у которых Apache установлен в качестве бэкенда, а nginx – фронтэнда, чаще всего генерируют данный код ошибки. Работа пользователя с сервером происходит по следующему плану: клиент отправляет запрос на сервер, который попадает не на прямую на Apache, а пересылается через nginx (это что-то вроде распределителя запросов). Если последний не смог получить ответ от Apache, за установленный промежуток времени, он отправляет клиенту вместо требуемого ему результата сообщение об ошибке сервера 504 (Gateway Timeout).
Нехватка ресурсов на сервере из-за большой нагрузки.
Сервер Apache имеет одну не очень приятную особенность – при большой нагрузке и нехватке ресурсов, он не успевает обрабатывать большое количество запросов и вовремя отдавать на них http-ответы. Таким образом, клиентские запросы выстраиваются в очередь, и когда лимит времени на получение ответа заканчивается, они сбрасываются ни с чем. Как следствие, пользователь видит на странице браузера код ошибки 504 (Gateway Timeout).
Следует учесть, что не всегда высокая нагрузка обусловлена большим числом посетителей, однако такое встречается не редко. Можете посмотреть статью " ", там подробнее рассмотрены причины возникновения нагрузки.
Ошибки, допущенные в скриптах.
Еще одной причиной появления данной ошибки являются ошибки в исполняемых скриптах. Как правило на исполнение скрипта отводится определенное количество времени, но в некоторых случаях ему этого времени не хватает. Часто это бывает когда скрипт обращается к стороннему серверу и не всегда успевает отправить запрос и получить ответ в отведенный лимит времени и как следствие выдает ошибку.
Можно выделить следующие причины задержки исполнения скрипта:
1. Скрипт пытается получить доступ к внешней базе данных, доступ к которой, по разнообразным причинам, сейчас невозможен.
2. Скрипт пытается получить на сервере данные, которые не доступны на данный момент (примером может быть работа разнообразных виджетов погоды, курсов валют и т. д.)
3. Скрипт пытается установить соединение через прокси-сервер, который на данный момент недоступен и не может обработать запрос.
Рассмотрим несколько распространенных случаев и попытаемся понять как исправить 504 -ю ошибку.
Если шибка возникает из-за нагрузки на сервер, то в первую очередь необходимо предпринять следующие шаги:
1. Провести оптимизацию сервера.
2. Провести оптимизацию скриптов.
3. Увеличить доступные для сервера ресурсы (количество процессов httpd (Apache), оперативную память и т. п.)
4. Если ресурс расположен на виртуальном хостинге, стоит подумать о том, чтобы поменять тарифный план или приобрести виртуальный выделенный сервер. На простом виртуальном хостинге улучшить ситуацию в силах только администраторы хостинг-провайдера. Потому как виной этому могут быть их действия или действия руководства хостинг-провайдера в следствии слишком большого размещения аккаунтов на одном сервере. В случае их бездействия наилучшим вариантом будет полностью сменить хостинг-провайдера.
Если вам нужен качественный виртуальных хостинг, можете обратить внимание на хостинг-провайдера , который предоставляет данную услугу в хорошем качестве.
Если есть подозрение на работу скриптов:
Нужно проверить на работоспособность ресурсы, к которым получают доступ скрипты. Очень часто проблема заключается именно в них.
Стоит проверить, за какой период времени выполняются скрипты и укладываются ли они в отведенный лимит. Если необходимо, то в конфигурационном файле php.ini нужно увеличить значение php_max_execution_time. Этот параметр определяет время исполнения скрипта, обычно это 30 секунд, при необходимости можно установить 60.
Наверняка, у вас случалась ситуация, когда вы пытаетесь открыть сайт, а он вам — Internal Server Error (например). Если сайт чужой, то вы, скорее всего, закрыли и забыли. А если какую-то подобную ошибку показывает ваш сайт, то это может привести вас в ужас: а вдруг сайт взломали или сервер “упал”? Чтобы это больше не вводило вас в панику, мы решили прояснить этот вопрос и рассказать о причинах возникновения тех или иных ошибок на виртуальном хостинге и что же с ними делать.
Прежде чем кричать “всё пропало”, выполните следующее:
Если это помогло, то вероятно вы столкнулись с локальной проблемой, кэшем или пропагацией (процесс, когда DNS-серверы обновляют старые записи о домене на новые; может занимать до 72 часов).
Если же ошибка не ушла, то необходимо исследовать проблему детальнее. Рассмотрим основные ошибки на виртуальном хостинге и расскажем, как с ними бороться.
Из статьи вы узнаете:
Ошибка сервера 500, она же http 500 или “сайт упал”, как говорят в просторечии, имея в виду, что вы просто не можете зайти на свою веб-страницу. Эта ошибка означает, что веб-сервер столкнулся с непредвиденным условием, которое не позволяет ему выполнить ваш запрос для доступа к URL.
Ошибку можно решить путем исправления неполадок в программном обеспечении веб-сервера, если проблема не на вашей стороне. В первую очередь необходимо найти и проанализировать логи веб-сервера, которые смогут предоставить вам более детальную информацию. Что вы можете сделать, если доступа к таким логам нет:
Довольно редкая ошибка, но все же есть вероятность ее получения. Она означает, что веб-сервер не понимает или не поддерживает HTTP-метод, который находит в потоке HTTP-данных, отправленных ему клиентом.
Эта ошибка может быть решена только устранением проблем в программном обеспечении веб-сервера. В редких случаях такая ошибка может быть устранена интернет-провайдером.
Если вы столкнулись с 501 Error Not Implemented, свяжитесь с техподдержкой вашего хостингового провайдера, так как самостоятельно повлиять на решение этой проблемы вы не сможете.
Еще одна распространенная ошибка — 502 bad gateway. Что значит? Эта ошибка означает, что сервер получил недопустимый ответ от вышестоящего сервера, к которому он обратился для выполнения запроса. Такая проблема связана с плохой IP-связью между серверами, включая веб-сервер сайта, который вы пытаетесь открыть. Ошибка также может означать, что вышестоящий сервер выключен.
Ошибка 502 может быть вызвана проблемами с оборудованием у вашего интернет-провайдера или же его перегрузкой. Это означает, что с сетью между вашим компьютером и хостинговым сервером что-то работает неправильно.
Что можно делать в таких случаях:
503 ошибка или Error Service Unavailable (сервис недоступен) тоже встречается довольно часто. Эта ошибка означает, что веб-сервер в данное время не может обработать HTTP-запрос в связи с временной перегрузкой или техническими работами на сервере. Это временная ошибка, и она должна быть разрешена без вашего вмешательства через некоторое время. Также ошибка 503 может быть вызвана тем, что ваш хостинговый аккаунт достиг LVE-лимитов и выделить больше памяти невозможно.
Как решить проблему:
Такая ошибка означает, что сервер не получил своевременного ответа от другого сервера, которого он пытался достичь при попытке загрузить веб-страницу или выполнить другой запрос в браузере.
В основном это указывает на то, что второй сервер выключен или работает неправильно. Также ошибка может быть вызвана увеличением нагрузки на веб-сервер настолько, что он не может ответить на новые запросы и они ставятся в очередь. В результате этого запросы не обрабатываются вовремя и связь обрывается.
Ошибка 504 может быть исправлена только администраторами сети второго сервера.
В редких случаях ошибка может быть на уровне всего сервера и вы можете попробовать увеличить max_execution_time в php.ini или оптимизировать скрипты вашего сайта.
Эта ошибка указывает на то, что на сервере закончилось свободное дисковое пространство. Чаще всего возникает, когда запрашиваемое приложение не может найти достаточно серверных ресурсов для запуска.
Для решения проблемы необходимо почистить жесткий диск от ненужных файлов или добавить дополнительное дисковое пространство. В случае если ошибка была закэширована, сможет помочь перезапуск сервера.
Скорее всего, на виртуальном хостинге вы встретите такую ошибку довольно редко, так как она более характерна для и .
Название ошибки говорит само за себя: ваш аккаунт достиг ресурсных лимитов.
Возникает в основном по следующим причинам:
Ошибка 504 Gateway Timeout (time out) - одна из самых распространенных. Что же такое - 504 Gateway Timeout (time out)? Как правило, подобного рода ошибка может возникать в том случае, если на сервер, на котором находится какой-то веб-ресурс, посылается огромное количество запросов, и он просто не успевает их обрабатывать, то есть у него не получается в установленный лимит времени вернуть HTTP-ответ. Вследствие этого может даже прерываться соединение, а пользователь так и не получит доступ к веб-ресурсу. Это обусловлено тем, что сервер не успевает обрабатывать старые запросы, которых накопилось уже много, а появляются еще и новые, которые встают в очередь и не успевают обрабатываться.
Проблема может заключаться еще и в скрипте, который не успевает справиться с поставленной задачей за отведенное ему время. В большинстве случаев это происходит тогда, когда скрипт обращается к сторонним узлам. Для того чтобы решить такую проблему, достаточно увеличить значение параметра PHP max_execution_time. Если проблема не будет решена, тогда придется каким-либо образом оптимизировать сам скрипт, чтобы он смог выполнять задачи за установленное время.
Справиться с насущной проблемой может только администратор сервера, который должен увеличить его производительность в несколько раз. Осуществить задуманное можно только если увеличить количество оперативной памяти компьютера, а также сменить процессор на более мощный. Кроме того, потребуется увеличить количество процессов httpd непосредственно в среде Apache. Может случиться и такое, что сайту вообще придется «переехать» на другой хостинг. Такая необходимость возникнет только в том случае, если сайт будет располагаться на обычном виртуальном хостинге, администратор которого либо не будет отвечать на запросы, либо откажется от помощи или если у него не получится решить такую проблему.
Существует еще один вариант решения, который, возможно, придется по душе большей части пользователей. Этот вариант подразумевает оптимизацию непосредственно самого сайта. То есть администратору сайта потребуется оптимизировать скрипты, SQL-запросы и многое другое для того чтобы они смогли выполняться за меньшее количество времени.
Данные коды (их еще называют http-статусы) посылаются веб-сервером хостинга в ответ на запрос пользователя, который идет через его браузер. Говоря проще, пользователь хочет зайти на определенный сайт и клацает ссылку в браузере. Браузер посылает запрос на сервер хостинг-провайдера, а тот ему в ответ посылает код, исходя из которого браузер делает определенное действие (показывает сайт\показывает ошибку\показывает не то, что запросил пользователь).
Сообщает о том, что сервер принял первую часть запроса, и можно продолжать посылать остальные части.
Сервер (по требованию браузера) переключил протоколы. Это задание передается серверу в заголовке Upgrade.
Сервер обработал запрос браузера (пользователя) и передал ему то, что он хотел. А пользователь должен увидеть сайт или файл, который запрашивал.
Код сообщает, что сервером создан новый идентификатор URI. В ответе сервера (заголовок Location) можно найти место куда именно были помещены созданные данные.
Сервер принял запрос, но будет обрабатывать его позже. К тому же, в конечном счете нельзя быть уверенным на 100%, что сервер обработает Ваш запрос. Ищите детальную информацию о причинах в сообщении, которое приходит вместе с кодом ошибки.
Сервер передал запрашиваемую информацию, но сообщает о том, что взял ее на другом сервере или же из собственной копии.
Этот код показывает браузеру, что его запрос принят, но ответ на него пустой, и браузеру не нужно ничего делать. Чаще всего это происходит, когда пользователь клацает по пустому месту страницы или по картинке (без ссылки).
Сообщает о том, что нужно очистить одну или несколько форм, в которые могли быть заполнены данные. Чаще всего используется для очистки форм сообщений или любых других форм ввода информации.
Сервер принял запрос и вернул только определенную часть данных, которые были запрошены. Какую именно часть нужно вернуть серверу, указывается в заголовке запроса пользователя Range. А сервер указывает это в своем ответе (смотрите заголовок Content-Range).
Код показывает, что один и тот же URL ведет к нескольким документам или страницам. Примером может служить одна и та же страница переведенная на несколько языков. Более подробно о причине ошибки, нужно узнавать в теле ответа сервера. Но чаще всего проблема кроется в заголовках или адресах объектов, и если указать их правильно, то ошибка исчезнет. Важно знать, что данная ошибка может вредить правильной индексации Вашего сайта поисковиками.
Пользователь запросил объект (страницу), который уже не используется сервером. А сервер в свою очередь перенаправляет пользователя на другую страницу, которая и отображается в браузере. Важно понимать, что поисковый робот перестанет индексировать исходную страницу, и вместо нее будет индексировать ту, на которую идет перенаправление. Этот способ чаще всего используется для редиректа - перенаправленния с одной страницы на другую. Для этого в файле.htaccess прописываем:
Redirect 301 /page1.html http://вашсайт.ru/page2.html
Данный код похож по своему смыслу на код 301, но лишь с тем отличием, что старый объект временно недоступен, и вместо него показывается новый. Чаще всего этот отображается в случае если с текущей страницей ведутся работы, и вместо нее подставляется ее дубликат, но с другим адресом.
Сообщение говорит о том, что запрошенный пользователем объект (страница) находится по другому адресу, и доступ к нему нужно получать GET-запросом. Новый адрес указывается в заголовке Location.
Этот код показывает, что страница не изменялась с определенного времени и браузер может использовать старую версию (которая скорее всего сохранена в его памяти). Это позволяет не загружать заново страницы, которые не подвергались изменению, что ускоряет время их загрузки. Также это позволяет ускорить индексацию сайта поисковыми роботами, сократить трафик и нагрузку на сервер.
Доступ к объекту (странице сайта) может быть разрешен только с помощью proxy-сервера, адрес которого указывается в заголовке Location.
Код почти идентичен 302 Moved Temporarily, но более валидный.
Сервер не понял запрос браузера пользователя из-за синтаксической ошибки.
Эта ошибка сообщает, что для доступа к запрашиваемой странице нужно быть авторизованным.
Данный код очень редко используется, и означает скорее проблемы с конфигурацией сервера, чем проблемы с оплатой услуг.
Ошибка сообщает о том, что доступ к данной странице запрещен, или же сервер не может его предоставить.
Объект (страница сайта), который хочет увидеть пользователь не найден. Обычна причина в том, что случайно удалена запрашиваемая страница, или же ее адрес введен не правильно.
В запросе (строка Request-Line) указан такой метод, который не поддерживается сервером. Часто это происходит при отправке POST-данных на неправильную страницу. Соответственно, чтобы решить эту проблему проверьте правильность указанного пути (атрибут action).
Пользователь пытается посмотреть документ, который существует на сервере, но имеет кодировку\язык\формат, которые не поддерживаются у пользователя. В итоге нужно искать причину в заголовках Content-Language, Content-Encoding или Content-Type.
Сообщает о том, что запрос proxy-сервера должен быть санкционирован (заголовок Proxy-Authenticate).
Пользователь не передал полный запрос в течении какого-то времени (задается на сервере). И из-за этого сервер разорвал соединение с пользователем, передав ему ошибку 408. В данном случае нужно проверить настройки браузера и файервола, т.к. в большинстве случаев именно они являются корнем проблемы.
Запросы, который посылает пользователь конфликтует с сервером или другим запросом. Данная проблема имеет множество причин, описывать которые не имеет смысла. Для ее решения лучше сразу обратиться к хостинг-провайдеру, чтобы сэкономить время.
Пользователь пытается посмотреть объект (страницу сайта), который не существует. Но раньше он существовал, и был навсегда удален с сервера.
Запрос не будет принят сервером, пока не определится заголовок Content-Length.
Запрос передаваемый на сервер очень большой, поэтому сервер его не может обработать. Все подробности нужно смотреть в содержании ответа, т.к. там и кроется причина данной ошибки.
URL который запрашивает пользователь слишком длинный, поэтому сервер не может его обработать. Для решения проблемы проверьте правильность URL и его длинну, а также обратите внимание на атрибут Request-URI.
Сервер не поддерживает формат запроса пользователя, поэтому не может его обработать.
Сервер не сможет выполнить запрос, пока значение поля Range не станет корректным (задается в байтах).
Обычно эта ошибка возникает из-за того, что значение поля запроса Expect является некорректным.
Одна или несколько частей не могут быть обработаны сервером.
Запрашиваемый объект (страница сайта) заблокирован.
Один из ресурсов (зависимых) недоступен или блокирован, поэтому сервер не может дать доступ к нему.
Сервер принял запрос по стандартному соединению, но запрашивает SSL-соединение, которое не поддерживается клиентом. В итоге сервер выдает ошибку 426.
Данный код сообщает, что на сервере произошла внутренняя непредвиденная ошибка или аварийный отказ.
Сервер не смог понять запрос, который ему передали. Причин этой ошибки множество, поэтому сразу обращайтесь в службу поддержки хостинга.
Браузер пользователя послал запрос к серверу, но тот связан с еще несколькими серверами, между которому происходит цепочка переадресации запроса. Где-то в этой цепочке сервер не смог обработать запрос, и первый в цепочке сервер (который принял Ваш запрос) послал Вам код ошибки 502.
Эта ошибка означает, что сервер временно перестал работать. Как правило это происходит если он находится в состоянии перезагрузки или отключен на временное обслуживание. Если вместе с сообщением об ошибке пришел параметр Retry-After, то его значение и будет тем временем, через которое сервер должен восстановить работу.
Сервер (который принял запрос от пользователя) может находиться в цепочке серверов и передает запросы к конечному серверу, который их обрабатывает. В случае с ошибкой 504 первый сервер не получил ответ от вышестоящего сервера и отправил Вам сообщение об этом.
Пользователь отправил серверу запрос с версией http-протокола, который не поддерживается.
Места на диске недостаточно, и сервер не может обработать запрос пользователя. Или освободите место самостоятельно, или обратитесь в службу поддержки, т.к. в случае с виртуальным хостингом (или VPS) на Вашем сервере находятся еще и сайты других пользователей, удалить которые Вы не сможете.
Расширение запрашиваемого файла не поддерживается или отсутствует.
Возможно, для работы вашего сайта необходимо наличие определенного модуля PHP, которого нет в текущей версии. Попробуйте переключить версию PHP на другую: .
Может случиться, что для работы одного сайта необходима одна версия PHP, а для другого сайта — другая. Так как версия PHP меняется для всего аккаунта, решить проблему можно разделением сайтов по двум услугам хостинга.
Файлы сайта должны быть расположены в . Если это не так, разместите сайт в верном каталоге.
В большинстве случаев корректными правами для каталогов являются «755» , а для файлов «644» .
Неверные правила в файле .htaccess также частая причина возникновения ошибки. Если вы самостоятельно вносили изменения в .htaccess , попробуйте их убрать и проверить доступность сайта.
Также может помочь замена текущего файла .htaccess стандартным для вашей CMS:
На виртуальном хостинге сайт установлено ограничение в 18 одновременно запущенных процессов (). Если данный лимит будет достигнут, новый процесс не сможет запуститься и возникнет ошибка.
Ограничение (18 одновременных процессов) может складываться из CRON-заданий, частых подключений с помощью почтовых клиентов по протоколу IMAP, подключения по FTP или других зависших процессов.
Вы можете проверить текущее количество запущенных процессов, и выполнив команду:
ps aux | grep [u]1234567 |wc -l
Для того чтобы посмотреть какие именно процессы запущены, введите команду:
ps aux | grep [u]1234567
Командная строка отобразит запущенные процессы, каждый процесс имеет вид:
Процесс можно завершить командой kill, например:
Где 40522 — PID процесса.
Также вам может помочь:
Ошибка также может возникнуть из-за превышения лимита на количество PHP-процессов, согласно на тарифных планах Hos t максимальное количество процессов PHP составляет 4 , на тарифных планах VIP — 32 . Посмотреть запущенные процессы можно при помощи команды ps aux ,
ps aux | grep php | grep u1234567
где u1234567 — ваш логин хостинга.
Вы можете завершить текущие php-процессы, изменив версию PHP на отличную от текущей, а затем включив версию PHP, которая была установлена ранее.
На сервере VPS, кроме ошибок в файле .htaccess и неверно выбранной версии PHP, причиной может являться отсутствие свободного дискового пространства или объектов файловой системы. Узнать значение этих двух параметров можно в , на странице управления услугой:
Если какой либо параметр достиг предела, воспользуйтесь справкой: