Форум русской поддержки Joomla!® CMS
05.12.2016, 00:20:11 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Как победить ошибку 504 Gateway Time-out на VPS?

 (Прочитано 345 раз)
0 Пользователей и 1 Гость смотрят эту тему.
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1150


желаю вам счастья


« : 11.01.2016, 17:32:05 »

Здравствуйте!

На админской части сайта после запуска в ней по всей видимости тяжелой задачи по подхватыванию и распознаванию 180 подгруженных через ftp картинок, теперь отображается 504 Gateway Time-out с подписью nginx. В логе ошибок примерно такое
2016/01/11 13:28:14 [error] 7678#0: *1227364 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 62.76.80.15, server: mysite.ru, request: "GET /administrator HTTP/1.1", upstream: "http://mysite.ru:81/administrator", host: "www.mysite.ru"
Пытался увеличить лимиты в nginx.conf и делал service nginx restart после этого, но то ли слабо повысил, то ли ещё что, админка пока не открывается

Как можно разобраться в причине ошибки и её устранить? Может надо весь VPS перезагрузить и все заработает?
Записан
voland
Профи
********

Репутация: +487/-86
Offline Offline

Пол: Мужской
Сообщений: 8697


любит наш народ всякое гавно...


« Ответ #1 : 11.01.2016, 17:34:04 »

Ничего не надо делать.
ну ошибка, дальше работаем.
Записан
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1150


желаю вам счастья


« Ответ #2 : 11.01.2016, 18:08:24 »

Ничего не надо делать.
ну ошибка, дальше работаем.
так мне надо в админку, а она открывается этой ошибкой Azn
Записан
wishlight
Профи
********

Репутация: +200/-1
Offline Offline

Пол: Мужской
Сообщений: 3478


skype aqaus.com


« Ответ #3 : 11.01.2016, 18:22:54 »

Логи nginx посмотрите. И нагрузку на VPS в это время.
Записан
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1150


желаю вам счастья


« Ответ #4 : 11.01.2016, 18:37:15 »

Логи nginx посмотрите. И нагрузку на VPS в это время.
в логах указано то, что я привел в первом посте. А как узнать нагрузку на VPS на какой-то конкретный момент в прошлом?
Вот вывод текущего top:
Записан
dmitry_stas
Профи
********

Репутация: +795/-4
Online Online

Сообщений: 7743



« Ответ #5 : 11.01.2016, 18:37:42 »

в другом браузере пускает в админку?
Записан
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1150


желаю вам счастья


« Ответ #6 : 11.01.2016, 18:41:03 »

в другом браузере пускает в админку?
похоже я словил кэш Azn сбросил кэш хрома и заработало, полдня ушло... Azn все, зарубил себе на носу

P.S.вопрос про нагрузку в любой момент прошлого остается актуальным
Записан
dmitry_stas
Профи
********

Репутация: +795/-4
Online Online

Сообщений: 7743



« Ответ #7 : 11.01.2016, 18:52:45 »

скорее не кеш, а в сессии сохранилось (и не удалилось, потому что 504) что-то, из-за чего каждый раз заново был запуск
по всей видимости тяжелой задачи по подхватыванию и распознаванию 180 подгруженных через ftp картинок
и так по кругу.
Записан
Yura Vakulenko
Осваиваюсь на форуме
***

Репутация: +6/-1
Offline Offline

Пол: Мужской
Сообщений: 178


« Ответ #8 : 12.01.2016, 01:07:48 »

504 Gateway Time-out с

возможно, поможет предотвратить появление этой ошибки увеличение  max_execution_time (_http://php.net/manual/ru/info.configuration.php#ini.max-execution-time) для твоего PHP.
для конкретного скрипта можно используй set_time_limit() (_http://php.net/manual/ru/function.set-time-limit.php)
К примеру, в той функции, что загружает твои картинки - укажи set_time_limit(150) и обработай снова запрос. Посмотри на результат.

для всего сайта - напиши в httaccess
php_value max_execution_time 60
Глобально - измени max_execution_time в php.ini

Так же попробуй изменить max_input_time (_http://php.net/manual/ru/info.configuration.php#ini.max-input-time)

в логах указано то, что я привел в первом посте. А как узнать нагрузку на VPS на какой-то конкретный момент в прошлом?
Вот вывод текущего top:


Устанави на ВПС отличную утилиту мониторинга производительности системы с веб-интерфейсом. Советую Munin (munin-monitoring.org). У нее простые настройки.. ест мало памяти, дает обширную информацию, как по производительности самой системы (память, процессор, кэш, процессы в памяти, аптайм, запросы, хосты.. и прочее.. так же достаточно просто расширить функционал - установив дополнительные счетчики. Счетчики доступны на оф. сайте или в сети в виде текстовых файлов с алгоритмами.. ) Статистику смотришь через веб-интерфейс с любого браузера и с любой точки мира. (для этого просто установи веб-сервер, если не установлен..  и помести все файлы Munin в файловую систему веб-сервера, настрой .httaccess для доступа к статистике по учетным данным.)
« Последнее редактирование: 12.01.2016, 01:31:45 от Yura Vakulenko » Записан
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1150


желаю вам счастья


« Ответ #9 : 12.01.2016, 10:12:12 »

скорее не кеш, а в сессии сохранилось (и не удалилось, потому что 504) что-то, из-за чего каждый раз заново был запуски так по кругу.
Доброго утра! Спасибо. И как в этом случае надо выходить из ситуации?
Записан
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1150


желаю вам счастья


« Ответ #10 : 12.01.2016, 10:22:09 »

для всего сайта - напиши в httaccess
php_value max_execution_time 60
Глобально - измени max_execution_time в php.ini
Спасибо за дельный совет, попробую воспользоваться как зависнет снова. Хотя вопрос, как я запущу задачу сновыми настройками php, если у меня снова будет 504 ошибка на весь экран?..
То, что вы в цитате посоветовали относится к Апачи. Для этого мне надо разобраться сначала, Апачи или Nginx у меня висит на админке. Прошу в этом помочь разобраться. Вот кусок настроек nginx.conf:
Показать текстовый блок
Записан
voland
Профи
********

Репутация: +487/-86
Offline Offline

Пол: Мужской
Сообщений: 8697


любит наш народ всякое гавно...


« Ответ #11 : 12.01.2016, 10:46:31 »

PHP обрабатывается апачем, потом через нгинкс
Когда нгинкс не дожидается ответа (по дефолту 30 сек) он сам отдает 504
При это апач может дальше обрабатывать скрипт и может даже успешно его завершить если он успеет во временные рамки апача, по совету выше это 60 секунд.

Как вариант для выполнения долгих задач - временно (лучше временно) выставить секунд 600 (или сколько там точно хватит) и обращаться на сайт напрямую в апач по адресу site.ru:81/administrator
Записан
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1150


желаю вам счастья


« Ответ #12 : 12.01.2016, 10:57:09 »

спасибо
Когда нгинкс не дожидается ответа (по дефолту 30 сек) он сам отдает 504
за это отвечает параметр proxy_read_timeout в настройках nginx?
Как вариант для выполнения долгих задач - временно (лучше временно) выставить секунд 600 (или сколько там точно хватит) и обращаться на сайт напрямую в апач по адресу site.ru:81/administrator
выставить для чего, где вы имели в виду?
Записан
voland
Профи
********

Репутация: +487/-86
Offline Offline

Пол: Мужской
Сообщений: 8697


любит наш народ всякое гавно...


« Ответ #13 : 12.01.2016, 10:59:27 »

спасибоза это отвечает параметр proxy_read_timeout в настройках nginx?
Не помню, почитайте доки

выставить для чего, где вы имели в виду?
php_value max_execution_time - вот этот параметр, чтоб скрипт отработал
Записан
dmitry_stas
Профи
********

Репутация: +795/-4
Online Online

Сообщений: 7743



« Ответ #14 : 12.01.2016, 11:00:51 »

server {
...
    proxy_connect_timeout       600;
    proxy_send_timeout          600;
    proxy_read_timeout          600;
    send_timeout                600;
...
}
Записан
Yura Vakulenko
Осваиваюсь на форуме
***

Репутация: +6/-1
Offline Offline

Пол: Мужской
Сообщений: 178


« Ответ #15 : 12.01.2016, 17:38:27 »

server {
...
    proxy_connect_timeout       600;
    proxy_send_timeout          600;
    proxy_read_timeout          600;
    send_timeout                600;
...
}

так как у вас работают одновременно 2 вебсервера - вам нужно одновременно производить настройки времени выполнения скриптов на 2-х серверах... и таким образом, чтобы они были одинаковыми.. чтобы и в апатч было, к примеру 600 сек. и в нджинкс - 600 сек..  а то выйдет именно таким образом, как написал ниже темны лорд Воланд )
---------------
PHP обрабатывается апачем, потом через нгинкс
Когда нгинкс не дожидается ответа (по дефолту 30 сек) он сам отдает 504
При это апач может дальше обрабатывать скрипт и может даже успешно его завершить если он успеет во временные рамки апача, по совету выше это 60 секунд.
-------------
а для того, можно  воспользоваться функц. ini-set() _http://php.net/manual/ru/function.ini-set.php что во время выполнения скрипта (функции.. ) изменяет глобальные значения конфиг. PHP. т.е. они будут одинаковыми для обоих серверов сразу..

вот, к примеру.. загружаете вы 2000 картинок на сервер в 1 раз..  это у вас выполняет функция upload_images()
откройте код этой функции и укажите в самом начале..
Код:
ini_set('max_execution_time', '600');
ini_set('max_execution_time', '600');
ini_set('memory_limit', '256M');
ini_set('mysql.connect_timeout', '600');
ini_set('default_socket_timeout', '600');


больше опций и о опциях можно почитать тут.. _http://php.net/manual/en/ini.list.php
Узнать о текущих настройках поможет функция ini_get_all()
Записан
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1150


желаю вам счастья


« Ответ #16 : 12.01.2016, 17:55:07 »

---------------
PHP обрабатывается апачем, потом через нгинкс
Когда нгинкс не дожидается ответа (по дефолту 30 сек) он сам отдает 504
При это апач может дальше обрабатывать скрипт и может даже успешно его завершить если он успеет во временные рамки апача, по совету выше это 60 секунд.
-------------
а для того, можно  воспользоваться функц. ini-set() _http://php.net/manual/ru/function.ini-set.php что во время выполнения скрипта (функции.. ) изменяет глобальные значения конфиг. PHP. т.е. они будут одинаковыми для обоих серверов сразу..
Судя по сообщению Воланда php отрабатывается только апачем, я nginx ждет готовый ответ. Поэтому я как-то не понимаю как функция ini-set повлияет на таймауты nginx
Люди добрые, просветите, зачем в файле настроек nginx введены две секции настроек с разным location? location / - это фронтенд, а location ~*(administrator|comprofiler)* - админка? смысл в более грамотном перераспределении ресурсов сервера?
Второй вопрос - правильно я понимаю, что и во фронте, и в админке у меня работает всегда связка apache+nginx?
« Последнее редактирование: 12.01.2016, 17:58:45 от borro » Записан
voland
Профи
********

Репутация: +487/-86
Offline Offline

Пол: Мужской
Сообщений: 8697


любит наш народ всякое гавно...


« Ответ #17 : 12.01.2016, 17:57:40 »

Есть отдача странички пользователю - нгинкс
А есть собственно выполнение скрипта - если это масштабирование картинок, оно может завершиться, а может и нет - за это апач отвечает.
Но если апач (+пхп) будет думать больше чем ждет нгинкс, то пользователь не узнает успех выполнения, а увидит 504.

Разжевано вроде уже больше некуда!
Записан
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1150


желаю вам счастья


« Ответ #18 : 12.01.2016, 18:01:23 »

Есть отдача странички пользователю - нгинкс
А есть собственно выполнение скрипта - если это масштабирование картинок, оно может завершиться, а может и нет - за это апач отвечает.
Но если апач (+пхп) будет думать больше чем ждет нгинкс, то пользователь не узнает успех выполнения, а увидит 504.

Разжевано вроде уже больше некуда!
Спасибо, это я уже понял. У меня немного другие вопросы были Azn
Записан
dmitry_stas
Профи
********

Репутация: +795/-4
Online Online

Сообщений: 7743



« Ответ #19 : 12.01.2016, 19:46:09 »

зачем в файле настроек nginx введены две секции настроек с разным location? location / - это фронтенд, а location ~*(administrator|comprofiler)* - админка? смысл в более грамотном перераспределении ресурсов сервера?
Второй вопрос - правильно я понимаю, что и во фронте, и в админке у меня работает всегда связка apache+nginx?
можно и так сказать. я например по /administrator/ защиту от ботов настроил, отдаю им 404. у кого как. зачем конкретно у вас - без содержимого location не скажешь

Второй вопрос - правильно я понимаю, что и во фронте, и в админке у меня работает всегда связка apache+nginx?
99% что да
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet