504 ошибка битрикс

Ошибка 504 gateway time out частенько вылетает при открытии страницы сайта на битрикс.

504 gateway time-out nginx/1.4.2 битрикс

Данная ошибка частенько вылетает при открытии страницы сайта. При просмотре логов сайта можем обнаружить следующую ошибку upstream timed out (110: Connection timed out) while reading response header from upstream В данном случае сервер nginx отправил запрос на apache и не дождался ответа. По умолчанию время ожидания ответа состовляет 60с. Бывает что сайт очень тяжелый, много скриптов и если ты уверен в работоспособности всех модулей и компонентов, можно добавить времени ожидания, прописав в конфиге nginx в секции location следующие строки

proxy_connect_timeout 300; 
proxy_send_timeout 300;
proxy_read_timeout 300;
  • На Centos конфиг хранится по следующему пути etcnginxnginx.conf
  • Логи сайта храниятся в папке varwwwwww-rootdatalogs

В моем случае это не помогло. Ошибка 504 gateway time out в битрикс вылетала из-за загруженности процесса httpd на 85%.

Переведя сайт на CGI PHP 5.4.45 полетели ошибки в логах Timeout waiting for output from CGI script /var/www/php-bin-isp-php56/www-root/php и Script timed out before returning headers: php При помощи команды top я увидел загруженность процесса php на 75%. Значит все дело в исполнении php скрипта. Похоже, что есть какая-то ошибка в РНР-скриптах сайта, потому как подключений совсем немного, а нагрузка от обработки ощутимая:

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
31386 www-root 20 0 619956 184084 14328 S 75.0 18.1 1:19.59 php

Как узнать, какой запрос в настоящий момент выполняет php-cgi процесс

Покопавшись в интернете, я собрал очень полезные утилиты для работы с процессами на стороне сервера. Установку делал с помощью yum install strace Благодаря команде lsof, описание дал ниже, увидел последний файл, который был открыт процессом php. Это xml-файл yandex_torg04042015.php создавался агентом CCatalog::PreGenerateXML битрикс для системы Яндекс.Товары Происходил экспорт товаров в файл из инфоблока каталога товаров в количестве 15944шт Соответственно убрав выполнение агента, сайт быстренько открылся. Т.к. ошибка возникала на тестовом сервере, убрал выполнение всех агентов прописав в dbconn.php

define("NO_AGENT_CHECK", true);
define("NO_AGENT_STATISTIC", true);
  • top Выводит список процессов и информации о них в режиме реалтайм
  • mod_status Позволяет контролировать в реальном времени производительность сервера
  • strace -p PID Показывает системные вызовы, которые происходят в данный момент в процессе
  • ps ax| grep PID Выдача информации о состоянии процессов
  • lsof -p PID Показывает список файлов, открытых процессом
  • kill -SIGKILL PID Убивает процесс

Ошибка 504 при оптимизации базы данных в Bitrix

Стандартная проблема для баз данных с большими таблицами — срабатывание внутреннего там-аута, при котором система с запущенным скриптом теряет связь с бд (MySQL), битрикс так и остается в ступоре (оживет после перезагрузки сервера), а в админке появляется сообщение об ошибке 504 Gateway Timeout. Возникать ошибка может на любом этапе на первой попавшейся большой таблице.

Решение 504 ошибки при оптимизации БД

Речь идёт о внутреннем инструменте оптимизации, доступным по сссылке вида: https://domain.com/bitrix/admin/repair_db.php?optimize_tables=Y&lang=.

Решение заключается в увеличении таймаутов на стороне Nginx.
Вносим правки в /etc/nginx/nginx.conf:
proxy_connect_timeout 2400;
proxy_send_timeout 2400;
proxy_read_timeout 2400;

По умолчанию все три значения равны 300 и этого явно недостаточно; значения 2400 должно хватить на большие таблицы, только запаситесь терпением, проверка больших таблиц — долгий процесс и со стороны будет казаться, что система зависла, на время проверки админка и сайт могут не будут отвечать, поэтому проводить оптимизацию нужно глубокой ночью.

При необходимости можно создать конфиг (если его нет) /etc/nginx/bx/settings/z_bx_custom.conf и вписать туда:
fastcgi_read_timeout 2400

После оптимизации увидите долгожданное сообщение:

Оптимизация БД в Bitrix

А битрикс будет считать базу оптимизированной.

Иногда при посещении отдельных страниц сайта мы сталкиваемся с тем, что на экране вместо желаемого контента появляется сообщение об ошибке с цифровым кодом. Для «непосвященного» пользователя это просто набор цифр, но на самом деле в этих цифрах заложена определенная информация. Все они группируются по видам причин возникновения сбоя. 

Сообщения, кодирующиеся в формате 5хх, говорят о проблеме на стороне сервера, например, когда невозможно выполнить запрос из-за нарушения связи между несколькими серверами. Ошибка 504 Gateway Time Out не является распространенной, но это не значит, что на нее не стоит обращать внимания, особенно владельцу сайта. Рассмотрим некоторые причины возникновения данной ошибки и способы ее устранения как на стороне обычного посетителя, так и администратором веб-ресурса.

Ошибка 504 Gateway Time Out – это код состояния HTTP, который появляется, когда в течение заданного периода времени один сервер не получает своевременный ответ от другого сервера, который действует как шлюз или прокси.

Описания ошибки могут иметь различную форму:

  • 504 Gateway Timeout nginx
  • Gateway Timeout Error
  • HTTP Error 504
  • 504 Gateway Time-out – The server didn’t respond in time
  • HTTP Error 504 – Gateway Timeout

Наличие дополнительного словесного описания помогает конкретизировать причину возникновения сбоя. 

Производительный хостинг в подарок при заказе лицензии 1С-Битрикс

Выбирайте надежную CMS с регулярными обновлениями системы и профессиональной поддержкой. А мы подарим вам год хостинга – специально для сайтов на 1С-Битрикс.

Заказать

Что делать посетителю сайта при возникновении ошибки 504 

Итак, вы столкнулись с появлением на экране сообщения «error 504». Не спешите уходить с сайта, ведь возникновение сбоя может говорить о неправильной работе вашего браузера или даже наличии более серьезных проблем на уровне пользовательского софта. Попробуйте произвести довольно простые действия, чтобы убедиться, что с вашим программным обеспечением и настройками все в порядке. 

  1. Перезагрузите проблемную страницу или текущий браузер. Если проблема устранилась и не повторяется вновь, особенно при посещении других сайтов, о ней можно просто забыть. При регулярном возникновении однотипных ошибок во время посещения разных ресурсов стоит покопаться в настройках собственного ПО поглубже.
  2. Зайдите на тот же самый сайт, где возникла ошибка сервера 504, используя альтернативный браузер. В случае, когда страница во время тестирования открылась корректно, обновите браузер, в котором случился сбой, до последней версии.
  3. Проверьте, как открываются страницы этого же сайта с другого компьютера или смартфона. Это позволит вам понять, не связано ли появление ошибки 504 с ПО конкретного устройства.
  4. При регулярном появлении HTTP ошибок, в т.ч. с кодом 504, очистите кэш браузера, удалите файлы cookies. Со временем в любом браузере накапливается много «мусора». Произведя очистку, вы поможете программе работать более корректно и даже быстрее.
  5. Произведите сброс настроек роутера или модема, отключив оборудование на некоторое время от сети. Данная операция вряд ли приведет к устранению ошибки 504, но может улучшить качество интернет-соединения. Провайдеры регулярно вносят изменения в настройки собственного софта, обновляют его. Иногда это приводит к конфликту в корректном взаимодействии пользовательского оборудования и серверов оператора. Перезагрузка устройства по питанию в большинстве случаев решает такие проблемы.
  6. Очистите кэш DNS. Данная операция кажется сложной для обычного пользователя, но на деле выполнить ее достаточно легко. Способ очистки зависит от вашей операционной системы, найдите соответствующий мануал в интернете.
  7. Для опытных пользователей подойдет рекомендация временно переключить DNS-сервер на Google Public DNS, что как минимум поможет определить, возник ли ошибочный код состояния HTTP по причине DNS проблемы. 

Если после проведения всех вышеозначенных рекомендаций любая ошибка, в т.ч. 504 Gateway Time Out, продолжает возникать регулярно, обратитесь в техподдержку проблемного интернет-ресурса. 

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Решение проблем с появлением ошибки сервера 504 администратором веб-ресурса 

Некорректная работа сайта чаще всего просто раздражает посетителя и приводит к тому, что пользователь находит альтернативный ресурс. Для владельца сайта такие сбои могут носить более глобальные последствия. Поэтому очень важно своевременно обнаруживать баги и максимально быстро устранять их. Для раннего мониторинга стоит использовать все возможные инструменты: 

  • проводить регулярную симуляцию пользовательского поведения на сайте;
  • настроить автоматизированный мониторинг работоспособности ресурса как встроенными инструментами администрирования, так и с использованием специальных скриптов;
  • обеспечить качественную работу службы технической поддержки сайта, своевременную обработку всех поступающих сообщений, особенно связанных с информацией о появлении разного рода ошибок на стороне пользователя. 

Соблюдение последнего правила не только позволит практически без дополнительных затрат отслеживать все возможные проблемы, которые возникают при посещении сайта. Своевременная обработка пользовательских запросов, быстрый ответ, выдача рекомендаций и публичное обсуждение повышают лояльность и создают дополнительный PR-эффект.

Почти все ошибки с кодом 5хх, возникающие из-за невозможности обработки определенного количества запросов, поступающих на сервер, решаются методом апгрейда железа (использованием высокопроизводительного хостинга) либо оптимизацией работы программного обеспечения. Второй способ зависит от вида движка, на котором создан конкретный сайт. При использовании условно-бесплатных программ (WordPress, OpeneCart и других) все проблемы придется решать на уровне администрирования, с привлечением конкретного веб-программиста, разработавшего данный сайт. Если баги возникают на платных платформах (1С-Битрикс, UMI.CMS, NetCat CMS), напишите об ошибке 504 Gateway Time Out в техподдержку разработчика. Отправить сообщение о проблеме следует и разработчикам платных скриптов, если они установлены на вашем сайте, и вы считаете, что сбои возникают по причине их некорректного исполнения. 

Вот некоторые причины, приводящие к возникновению ошибки 504 Gateway Time Out

  • Резкий скачок нагрузки на сайт вследствие поступления большого количества внешних запросов, вызванного DDoS-атаками или действиями вирусного ПО, пиковым посещением сайта, например, в момент проведения различных акций в интернет-магазине, или единовременной загрузкой на сайт большого объема контента (импорт информации из CSV- или XML-файлов).
  • Некорректная работа скриптов, плагинов и дополнений, конфликтующих как между собой, так и внутри.
  • Превышение лимита доступных ресурсов при использовании виртуального хостинга.

Еще одна возможная причина возникновения ошибки 504 – исполняемый скрипт не укладывается в отведенный лимит времени. Это бывает, когда скрипт обращается к другим сайтам либо просто выполняет тяжелую операцию, например, строит поисковый индекс.

Рекомендации по устранению ошибки 504 Gateway Time Out методами администрирования сайта

Ошибка 504 Gateway Time Out может быть вызвана недавними изменениями или обновлениями на сайте. Если после отката к состоянию, предшествующему изменениям, баг исчез, следует найти конкретное действие, повлекшее возникновение ошибки. Для этого необходимо проверить журнал ошибок соответствующей CMS. Пользователи WordPress могут включить журналирование ошибок в файле wp-config.php добавлением следующих строк: 

define( 'wp_debug', true );
define( 'wp_debug_log', true );
define( 'wp_debug_display', false )

Все возникающие варианты ошибок будут записаны в файле wp-contents/debug.log.

Для проверки работоспособности плагинов и расширений попробуйте отключить те, которые вызывают подозрение как источники возникновения ошибки 504. В первую очередь это касается устаревших скриптов, но причиной могут оказаться и обновления. Если проблема исчезла, далее следует найти некорректный плагин или дополнение и устранить или исправить его. Один из способов улучшения работы исполняемого скрипта – увеличить значение параметра PHP max_execution_time или облегчить скрипт.

При использовании CDN для более быстрого получения контента, в частности CloudFlare, который работает как CDN и как сервис предотвращения негативных последствий от DDoS, вы можете столкнуться с двумя типами ошибок 504. В случае возникновения проблемы на стороне CloudFlare лучшим решением будет связаться с поддержкой CloudFlare или отключить его. Второй вариант – когда сбой возникает на стороне хостинг-провайдера. В этой ситуации также необходимо обратиться в службу поддержки хостера.

Часто ошибку 504 можно видеть на серверах, где используется VPS-хостинг и установлен Nginx в качестве фронтенда и Apache в качестве бэкенда. Для устранения проблемы в Apache можно увеличить значение timeout по умолчанию в файле httpd.conf:

# Timeout: The number of seconds before receives and sends time out.

Timeout 600

Также увеличить лимит в max_execution_time в php.ini: 

После внесения изменений следует перезапустить Apache. Ошибка 504 Gateway Time Out должна исчезнуть.

Аналогичным образом проблема с появлением ошибки HTTP 504 решается пользователями Nginx. Попробуйте увеличить такие параметры в файле /etc/nginx/conf.d/timeout.conf:

proxy_connect_timeout 600;

proxy_send_timeout 600;

proxy_read_timeout 600;

send_timeout 600;

Также рекомендуется увеличить max_execution_time в php.ini:

Далее перезапустите Nginx и откройте сайт. 

Более простым решением устранения данной проблемы является использование панели управления сервером.

Данный способ позволяет администрировать настройки веб-сервера без использования консоли, один раз настроить их под ваш проект и больше не подключаться к серверу без острой необходимости.

Например, в бесплатной панели управления Vesta Control Panel достаточно внести изменения в раздел «Сервер» и навсегда забыть о возможности возникновения ошибок на сайте.

Ошибка ответа сервера 504 Vesta Control PanelИ далее внести соответствующие изменения.

Ошибка ответа сервера 504 Vesta Control Panel

Изменение php.ini в VestaCP

Аналогичным способом проблема устраняется и при использовании альтернативных панелей управления хостингом – Ajenti, CentOS Web Panel, ISPmanager и других.

Если вы считаете, что появление 504 Gateway Timeout вызвано превышением лимита использования ресурсов серверного железа, оптимальным решением будет аренда выделенного сервера или VPS. Когда ваш сайт уже размещен на виртуальном хостинге, но ни одна из рекомендаций не привела к исправлению error 504, обратитесь к хостинг-провайдеру. В этом случае подробно опишите причины, которые, как вы полагаете, привели к появлению сбоя.

Заключение

В данной статье мы рассмотрели основные причины возникновения ошибки HTTP 504 Gateway Timeout и популярные способы устранения неполадки. Уверен, некоторые администраторы веб-ресурсов сталкивались с подобными проблемами, выходящими за рамки приведенных примеров и рекомендаций.

Буду благодарен, если вы поделитесь своим опытом в комментариях.

 

Здравствуйте! Есть обмен между УТ 11.1.2.18 и сайтом, периодически обмен подвисает или выдает ошибку вида:  

Фоновый обмен
21.01.2014 10:57:02 Запуск выгрузки товаров
21.01.2014 10:57:07 Завершено формирование файлов выгрузки товаров
Выгружено товаров: 137
предложений: 129
картинок: 0
файлов: 0

В том числе для каталога Основной каталог товаров:
товаров: 137
предложений: 129
картинок: 0
файлов: 0

21.01.2014 10:58:40 Выгрузка на сайт завершилась с ошибками.
Не удалось получить данные с сервера. Проверьте правильность адреса сервера, порт, имя пользователя и пароль,
а также настройки подключения к Интернет.
Произошла ошибка:
import.xml: Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.
Ответ сервера:
<html>
<head><title>504 Gateway Time-out</title></head>
<body bgcolor=»white»>
<center><h1>504 Gateway Time-out</h1></center>
<hr><center>nginx/0.8.53</center>
</body>
</html>

21.01.2014 10:58:40 Завершена выгрузка товаров

 

Ошибку вам показал nginx. Он не смог за установленное время дождаться ответа от PHP.

Смотрите в лог ошибок nginx

Смотрите в лог апача: access_log и error_log

Скорее всего окажется, что какой-то шаг обмена не вернул ответ за 5 или 10 минут. И nginx показал ошибку.

Ищите в обмене с 1С какой-нибудь медленный обработчик.

Или можете в nginx увеличить максимальное время ожидания ответа.

 

Спасибо за ответ! В данный момент выскакивает другая ошибка

Невосстановимая ошибка
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘v’:
форма: Элемент
имя: {

http://v8.1c.ru/8.2/uobjects

}v
по причине:
Текст XML содержит недопустимый символ в позиции 285 :
Фоновый обмен
23.02.2014 13:02:49 Запуск выгрузки товаров
23.02.2014 13:09:41 Завершено формирование файлов выгрузки товаров
Выгружено товаров: 5 120
предложений: 4 097
картинок: 3 727
файлов: 0

В том числе для каталога Основной каталог товаров:
товаров: 5 120
предложений: 4 097
картинок: 3 727
файлов: 0

Ошибки в процессе выгрузки каталога Основной каталог товаров:Строка XML «ркШбшExif

почитал на форумах пишут что возможно из-за недопустимого знака в какой либо номенклатуре, но как узнать  в какой номен. если ее очень много.
Можно ли как то сохранить XML файл который формируется при выгрузке из УТ в битрикс, чтоб увидеть что за номенклатура?

 

Вы можете выгружать не на сайт, а в каталог на диске. Смотрите в настройках обмена с 1С.

Вы не пишите, где происходит ошибка. В какой части обмена? 1С закачала архив на сайт успешно?

 

Обмен вообще висит т.е. имеет статус «Задача выполняется» и так может целый день провисеть и ничего не выгружать, а данная ошибка возникает если я хочу посмотреть детально события выгрузки данных в узлах обмена с сайтами.

 

Файлы архива лежат в /upload/1c_catalog. Они пришли?

Если пришли, советую модуль

Продвинутый обмен с 1С

. Там можно включить лог-файл и Живой лог, чтобы посмотреть, что у вас. Может обмен идет, но только очень медленно. А может и дошел до конца.

——

Если файлы выгрузки так и не пришли в /upload/1c_catalog, тогда ошибка точно в 1С. Надо разбираться с 1С. Писать в техподдержку Битриксу

——-

На одном из проектов у нас была проблема с открытием отчетов в 1С. Мы не видели, как прошел обмен, потому что была какая-то ошибка XML с кракозяброй.

Но сейчас у нас стоит новое дополнение для 11.1.2.22 и ошибка XML не возникает.

Можете, как вариант, создать новую настройку обмена. Но нет гарантии, что ошибка XML не повторится.

 

Администратор

Сообщений: 4923
Баллов: 828
Регистрация: 16.10.2013

Есть такая проблема, что в УТ 11 ред. в товарах в файл описания для сайта указывают файл doc, pdf  и тд. Хотя туда должен указываться файл html с описанием товара.
Модуль обмена по этому реквизиту находит файл, читает его и записывает в XML как HTML описание товара. Само собой, если там будет файл другого формата — отобразятся иероглифы и обмен упадет.

 

Александр, что надо сделать чтобы такой ошибки c XML не возникало?

Я её смог воспроизввести у себя, когда открыл монитор обменов и посмотрел обмены не за день, а за месяц:

Полагаю, это какая-то детская ошибка в коде 1С, когда при записи отчета в журнал обменов не экранируется какой-нибудь спец-символ.

И, выходит, мы ничего не исправили, потому что новое дополнение мы ставили два месяца назад и настройки обменов пересоздали заново.

 

Александр Денисюк

Администратор

Сообщений: 4923
Баллов: 828
Регистрация: 16.10.2013

#9

28.02.2014 14:53:39

Цитата
Артемий Зайцев пишет:
Александр, что надо сделать чтобы такой ошибки c XML не возникало?

Я её смог воспроизввести у себя, когда открыл монитор обменов и посмотрел обмены не за день, а за месяц:

Полагаю, это какая-то детская ошибка в коде 1С, когда при записи отчета в журнал обменов не экранируется какой-нибудь спец-символ.

И, выходит, мы ничего не исправили, потому что новое дополнение мы ставили два месяца назад и настройки обменов пересоздали заново.

Чтобы она не возникала — не нужно указывать левый файл в описании товара для сайта. Со стороны модуля обмена — никак нельзя проверить, что там за файл.

 

Мне, кажется, что ошибка в данных есть, но результат обмена должен всё-равно корректно записываться и открываться.

У клиента была истерика. Он сделал 10 обменов и все 10 прошли, а отчет открыть не может. Потому что отчет не открывается. Он думает, что обмен не прошел.

Проверять все данные очень тяжело. Клиент заполняет каталог в 1С различными сторонними скриптами.

 

Александр Денисюк

Администратор

Сообщений: 4923
Баллов: 828
Регистрация: 16.10.2013

#11

03.03.2014 11:18:47

Цитата
Артемий Зайцев пишет:
но результат обмена должен всё-равно корректно записываться и открываться.

Так сделано, что при ошибке пишется содержимое описания файла. А если указать левый файл, то содержимое его и будут иероглифы. Конечно, ошибка то может быть и в другом..

 

Пользователь 258500

Постоянный посетитель

Сообщений: 125
Баллов: 21
Регистрация: 03.06.2014

#12

18.05.2016 08:17:37

Цитата
Артемий Зайцев написал:
Ошибку вам показал nginx. Он не смог за установленное время дождаться ответа от PHP.

Смотрите в лог ошибок nginx

Смотрите в лог апача: access_log и error_log

Скорее всего окажется, что какой-то шаг обмена не вернул ответ за 5 или 10 минут. И nginx показал ошибку.

Ищите в обмене с 1С какой-нибудь медленный обработчик.

Или можете в nginx увеличить максимальное время ожидания ответа.

подскажите какой параметр php настроек надо увеличить для «максимальное время ожидания ответа»?  

 

Пользователь 25773

Эксперт

Сообщений: 848
Баллов: 150
Регистрация: 16.06.2008

#13

18.05.2016 15:00:56

Цитата
Цитата
Ошибку вам показал nginx. Он не смог за установленное время дождаться ответа от PHP.

Смотрите в лог ошибок nginx

Смотрите в лог апача: access_log и error_log

Скорее всего окажется, что какой-то шаг обмена не вернул ответ за 5 или 10 минут. И nginx показал ошибку.

Ищите в обмене с 1С какой-нибудь медленный обработчик.

Или можете в nginx увеличить максимальное время ожидания ответа.

подскажите какой параметр php настроек надо увеличить для «максимальное время ожидания ответа»?

Вы не сможете настройками PHP увеличить время ожидание ответа сервером nginx. Если ошибку 504 Gateway Time-out показывает nginx то надо просить администратора сервера настроить nginx. Но это все-равно временное решение.

В PHP есть функция set_time_limit(). Она установит вам время выполнения скрипта, но не сможет повлиять на nginx.

Ваша задача разобраться на каком шаге зависает обмен. И какой код ему мешает.

Модуль «Продвинутый обмен с 1C» http://marketplace.1c-bitrix.ru/solutions/askaron.pro1c/, создание сайтов и интеграция с 1С http://askaron.ru,

Ошибка 504 Gateway Timeout при экспорте товаров в 1С Битрикс

Ошибка 504 Gateway Timeout при экспорте товаров в 1С Битрикс встречается довольно часто. И связано это с хостингом. Давайте решим проблему прямо сейчас в этой статье.

Итак, причина однозначно связана с хостингом, и чаще всего встречается на VPS хостингах, так как из коробки, некоторые вещи тупо не включены на хостинге, а пользователь, особенно, который мало разбирается в настройках хостинга может и не знать, что и как делать. Данная статья направлена на то, чтобы максимально просто и легко разобраться, что нужно делать и где какие настройки устанавливать.

Для примера мы будем брать настройку VPS хостинга, который работает на панели управления ISPmanager 5 или 6 версий.

Ошибка 504 Gateway Timeout связана с тем, что по умолчанию сервер ограничивает выполнение PHP скриптов 60 секундами, а если у Вас, допустим 15 или 20 тысяч товаров, то этого времени не хватит сформировать файл CSV. Поэтому нам необходимо увеличить это время, и сделать это надо максимально грамотно, так как обычное изменение базовых настроек в PHP иногда не достататочно.

Настройки PHP при ошибке 504 Gateway Timeout

Первым делом идем в настройки PHP, смотрите скриншот ниже. Настройки находятся на панели управления ISPmanager слева.

Настройки PHP при ошибке 504 Gateway Timeout
Настройки PHP в ISPmanager 6

Далее выбираем ту версию PHP, на которой работает Ваш сайт, допустим PHP 7.2. В Верхнем меню выбираем «Основные настройки» и нажимаем на эту кнопку. Перед Вами будет вот такое окно. (см. ниже)

Здесь нас интересует только один параметр, а именно «Время выполнения». При количестве товаров около 20 тысяч, ставьте 600, что будет соответствовать 10 минутам. Этого времени должно хватить для выполнения скрипта. Изменяйте значение, и нажимайте «Ок» для сохранения настроек. Все, с этой секцией мы закончили, теперь надо настроить акселлератор (ускоритель) работы выполнения PHP скриптов.

Настройка Zend Opcache

Теперь задача такая, нам нужно настроить ускоритель. Для этого возвращаемся на страницу, где видим все версии PHP. Выбираем нужную версию, но в верхнем меню теперь выбираем «Управления расширениями» (см. скриншот)

Управление расширениями PHP в ISPmanager 6

Управление расширениями PHP в ISPmanager 6

Перед нами всплывет список всех расширений, которые можно установить на наш сервер на эту версию PHP, что Вы выбрали. Вам нужно выбрать opcache. (см. скриншот).

Расширение opcache в ISPmanager 6
Расширение opcache в ISPmanager 6

Как только Вы выбрали расширение, справа нажмите на значок лампочки, чтобы включить это расширение. Подождите пока расширение установится. Теперь надо настроить Opcache.

Настройка Opcache в ISPmanager 6

Если Вы думали, что уже все, я спешу Вас разочаровать. Мы подошли к середине процесса. Теперь возвращаемся обратно в настройки PHP. Нажимайте на выбранной версии PHP «Расширенные настройки» и ищите в настройках переменную opcache.max_accelerated_files смотрите скриншот ниже.

Настройка Opcache в ISPmanager 6
Настройка Opcache в ISPmanager 6

Здесь нам надо поменять значение 10000 на 100000 (сто тысяч). Чтобы это сделать, просто кликните дважды мышкой по строчке с переменной и поменяйте значение.

Настройка конфигурационного файла Apache при ошибке Gateway Timeout

И последнее, что нам нужно сделать. Это настроить главный конфигурационный файл Apache. Он находится по такому адресу: /etc/httpd/conf/httpd.conf — ищем этот файл встроенным файловым менеджером по данному адресу и открываем его. В самый конец этого файла на новой строчке пишем: TimeOut 600. Сохраняем файл и перезагружаем сервер (надеюсь Вы знаете как это делать. Если что, перезагрузка на вкладке Администрирование в ISPmanager).

Ждем, когда сервер заработает опять, идем в админку своего сайта и делаем выгрузку, все должно работать отлично. Если же Вы все равно сталкиваетесь с проблемами или Вам просто нужна помощь толкового специалиста, то смело обращайтесь ко мне по моим контактам, я обязательно Вам помогу или просто пишите напрямик в мой телеграм.

На чтение 5 мин. Просмотров 744 Опубликовано 15.12.2019

Содержание

  1. понедельник, 18 июля 2016 г.
  2. 502 504 в Битриксе
  3. 504 Gateway Time-out. Исправить ошибку, как увеличить тайм-аут | max_execution_time = 300.
  4. Изменяяем в PHP-FPM
  5. Изменяем в Nginx Config
  6. Перезагружаем PHP-FPM и Nginx
  7. Что значит 504 gateway time out Nginx?
  8. Как исправить 504 gateway time out Nginx?
  9. Выводы

понедельник, 18 июля 2016 г.

502 504 в Битриксе

для фикса 504 ошибки надо поправить лимит на время выполнения запросов.

1.
php.ini
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
max_execution_time = 800 ;время выполнения скрипта
max_input_time = 800 ;время выполнения отдельного запроса

nginx.conf,
# keepalive_timeout
proxy_send_timeout 800; # время ожидания при передаче запроса
proxy_read_timeout 800; # время ожидания при чтении ответа
proxy_connect_timeout 75; # время ожидания исполнения скрипта

proxy_connect_timeout в nginx 75 sec max

504 Gateway Time-out. Исправить ошибку, как увеличить тайм-аут | max_execution_time = 300.

Если проделанные ниже действия не помогут — меняйте хостинг.

Имененяем в php.ini

Изменить максим. время выполнения для PHP скриптов из 30 до 300 секунд.

Установите…

В Apache PHP работает как модуль, этих изменений будет достаточно. В нашем случае нужно сделать изменения еще в нескольких местах.

Изменяяем в PHP-FPM

Это нужно, если Вы раскоментировали параметр request_terminate_timeout ранее. По умолчанию он закоментирован и берет значение max_execution_time found из php.ini

Изменяем в Nginx Config

Увеличение time limit-а для одного домена example.com

nano /etc/nginx/sites-available/example.com location

Если Вы хотите увеличить time-limit для всех доменов на вашем сервере, Вы можете отредактировать главный конфигурационный файл nginx.conf:

Добавить следующий параметр в http <..>секцию

Перезагружаем PHP-FPM и Nginx

service php5-fpm restart service nginx restart

Method 1 – Modify your php.ini file with the following entries:

  • memory_limit = 256M
  • max_execution_time = 600
  • upload_max_filesize = 200M
  • post_max_size = 201M

Method 2 – In your /admin/ folder of OpenCart, create an .htaccess file with the following entries:

  • php_value memory_limit 256M
  • php_value max_execution_time 600
  • php_value upload_max_filesize 200M
  • php_value post_max_size 201M

Веб-сервер Nginx часто работает не только в качестве самого веб-сервера для отдачи контента, но и в качестве прокси, когда он вступает только посредником. Такая ситуация наблюдается намного чаще, чем можно было бы ожидать. Например, при работе с php-fpm и другими модулями динамических языков.

Именно в таком режиме может наблюдаться ошибка 504 gateway time out Nginx. В нашей сегодняшней статье мы попытаемся разобраться почему она возникает и как с ней бороться. Разберем несколько способов решения и причин.

Что значит 504 gateway time out Nginx?

Как я уже сказал, такая ошибка возникает, когда сервер Nginx работает в режиме прокси. Например, при использовании php-fpm или Apache. Дословно, она означает, что превышено время ожидания ответа от сервера. В нашем случае, превышено время ожидания ответа от php-fpm. Рассмотрим несколько причин такого поведения:

  • Скрипт PHP или на другом языке полностью завис и уже не вернет никакого ответа;
  • Скрипт работает очень долго, но в Nginx настроен интервал на сброс соединения если целевой сервер не ответил на запрос за отведенный строк;
  • Сервер перегружен и не успевает обслужить всех клиентов, вернуть ответы на все запросы Nginx;

Дальше рассмотрим что можно сделать если вы встретились с ошибкой 504 gateway time out Nginx.

Как исправить 504 gateway time out Nginx?

Самый первый вариант — это если вашему серверу, php-fpm или apache не хватает ресурсов системы, например, памяти или процессора. Вы можете посмотреть свободную память с помощью команды free:

Нагрузку на процессор можно узнать командой htop:

Естественно, если вы видите, что PHP занимает все процессорное время, то значит проблема в ресурсах сервера. Вы можете покопаться в движке своего сайта, пытаться оптимизировать те или иные моменты, об этом будет отдельная статья или же выбрать более мощный VPS сервер.

Второй вариант — это если так и было запланировано, чтобы скрипт работал долго. В таком случае нужно настроить Nginx, чтобы он дождался ответа от Apache или php-fpm. Для решения проблемы в случае с php-fpm нужно только добавить две строчки в блок настройки fastgci:

fastcgi_send_timeout 300;
fastcgi_read_timeout 300;

Здесь 300 означает 300 секунд, для большинства скриптов, этого будет вполне достаточно, но вы можете еще больше увеличить значение если это нужно. Также ошибка 504 может возникать, когда Nginx используется в качестве прокси для Apache или любого другого веб-сервера, тогда нужно еще настроить время ожидания для прокси. Добавьте эти строки в секцию server:

proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;

Тут уже мы задаем таймаут 600 секунд для различных видов действий — подключения, отправки данных, чтения данных и так далее. После завершения настройки Nginx стоит перезапустить:

sudo systemctl restart nginx

Последний вариант, который мы рассмотрим — это скрипт завис. Если вы сами запускаете скрипт, то сразу увидите что зависло, но если такая ошибка встречается у пользователей, то это уже более серьезная проблема. Вы можете посмотреть встречаются ли вашим пользователям такие ошибки и где они встречаются с помощью команды:

fgrep -i » 504 » /var/log/nginx/access.log

Более подробную информацию иногда можно увидеть в error.log:

fgrep -i » 504 » /var/log/nginx/error.log

Дальше, если проблема именно в php-fpm, вы можете отследить какие скрипты выполняются медленно с помощью встроенной функции slow-log. Для ее активации добавьте следующие строки в конфигурацию вашего пула:

sudo vi /etc/php-fpm.d/www.conf

slowlog = /var/log/php-fpm/www-slow.log
request_slowlog_timeout = 5s

Здесь 5 секунд, означает, что в лог файл будут добавляться скрипты, которые выполняются дольше пяти секунд. Вы можете менять это значение по своему усмотрению. В логе вы сможете увидеть не только сами скрипты, но и трассировку методов, которые привели к проблемам:

Дальше останется только разобраться что с этим делать, например, оптимизировать скрипты или отключить лишние плагины.

Выводы

В этой статье мы рассмотрели как исправить 504 gateway time out Nginx 1.2 7, а также почему может возникнуть эта ошибка. Надеюсь, эта информация была полезной для вас.

Есть скрипт для soap запроса на обновление товаров. Товаров много, 1000+. И функция не успевает выполнить код. Страница грузится 5 мин и выдает ошибку «504 Gateway Timeout. Bitrix Environment»
Как можно увеличить время ожидания ?


  • Вопрос задан

    более года назад

  • 718 просмотров

Пригласить эксперта

Сделать пакетную обработку

504 это отваливается nginx по таймауту
сам скрипт при этом все еще работает.
увеличь лимиты конекта в nginx
и увеличь лимиты времени в апаче
желательно только для этого файла.


  • Показать ещё
    Загружается…

09 февр. 2023, в 07:58

3500 руб./за проект

09 февр. 2023, в 07:25

50000 руб./за проект

09 февр. 2023, в 06:50

2500 руб./за проект

Минуточку внимания

13.10.2020
07:59
13.10.2020 07:59:48

Ошибка 504 Gateway Time-out — бывает по разным причинам, главное, что ответ от сервера не приходит в определенное время
Самое просто решение (если код рабочий)

Увеличить время ответа сервера, время выполнения скрипта

Мы поставили 3500 секунд, но надо подбирать индивидуально

1. ngix повысить время ожидания веб-сервера 3500 секунд поставить
Подключитесь через ssh
Откройте конфигурационный файл

 sudo nano /etc/nginx/nginx.conf

Добавьте(измените) строки в блоке server:

http{
   #...
   proxy_read_timeout 300;
   proxy_connect_timeout 300;
   proxy_send_timeout 300;
   #...
}

Добавьте(измените) строки в блоке server:

server {

#...

proxy_connect_timeout 3500;
proxy_send_timeout 3500;
proxy_read_timeout 3500;
send_timeout 600;

#...
}

Перезапустите Nginx

2 Установить php max_execution_time 3500
или .htaccess (лучше для проверки)

php_value max_execution_time 3500, 

или в  /bitrix/php_interface/dbconn.php

@ini_set("max_execution_time", 3500);

3. Установить php session.gc_maxlifetime 3500  
или .htaccess (лучше проверки)

php_value  session.gc_maxlifetime 3500,

или в  /bitrix/php_interface/dbconn.php

@ini_set("session.gc_maxlifetime", 3500); 

4. Установить  в /bitrix/php_interface/dbconn.php

5. В параметрах безопасности группы тоже увеличить сессию(во всех группах, где состоит пользователь, из-под которого обмен происходит, в т.ч. неавторизованные пользователи) 60мин (3500/60=59 мин)

Как проверить
Вывести параметры
можно в командной строке /bitrix/admin/php_command_line.php?lang=ru
можно в тестовом скрипте

//require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");//подключить пролог, если вы проверяете в скрипте и выставили max_execution_time и session.gc_maxlifetime в /bitrix/php_interface/dbconn.php
echo ini_get('max_execution_time'); 
echo ini_get('session.gc_maxlifetime');

запустить скрипт, который будет спать немного меньше времени. чем Вы выставили:

//require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");//подключить пролог, если вы выставили max_execution_time и session.gc_maxlifetime в /bitrix/php_interface/dbconn.php
sleep(3470);
echo "hello  world";

Искать причину в коде и править код

Причина 1
Куча кастомных обработчиков событий, или мало но очень тяжелые (долго исполняются), или много запросов к базе можно оптимизировать
Смотреть в init.php, в модулях
Решение: переделать обработчики, убрать обработчики, оптимизировать запросы к базе

Причина 2
Большая структура разделов, она выполняется за 1 шаг, если количество товаров-свойств в пакете можно уменьшить, то структура создается за 1 шаг.
Решение: только увеличить время ответа сервера, время выполнения срипта (см. выше)

Причина 3
при загрузке файла с ценами prices_***.xml
в компоненте bitrix/catalog.import.1с/component.php
на 7 шаге ($NS[«STEP»] == 7)
вызывается метод

$result = $obCatalog->ImportElements($start_time, $arParams["INTERVAL"]);

который описан тут /bitrix/modules/iblock/classes/general/clm2.php

метод обновляет фасетный индекс инфоблока, запускается без учета по времени выполнения срипта

IblockPropertyIndexManager::runDeferredIndexing($this->next_step["IBLOCK_ID"]);

И он выполнялся у заказчика 2 минуты! Соответственно 1С получает 504 Gateway Time-out, и обмен завершается ошибкой.
метод runDeferredIndexing описан тут /bitrix/modules/iblock/lib/propertyindex/manager.php
цикл

 foreach (self::$elementQueue[$productIblock] as $elementId)
               self::elementIndexing($indexer, $elementId); //тут долго выполняется

Решение 2. закомментировать данную строку

self::elementIndexing($indexer, $elementId); 

но после выполнения обмена надо запустить создание фасетного индекса

Иногда возникает проблема — при попытке выполнить обновление системы(особенно для старых версий) страница обновления падает с 504 ошибкой. Причиной тому является высокое время обработки запроса(типа слишком много обновлений и всё такое). Эта проблема может решаться одним из двух путей:

— Попробуйте добавить в файл /bitrix/php_interface/after_connect.php следующую строчку:

$DB->Query(«SET wait_timeout=28800»);

и в /bitrix/php_interface/after_connect_d7.php:

$connection->queryExecute(«SET wait_timeout=28800»);

— Если предыдущий способ не смог разрешить проблему, то можно попробовать сделать иначе. В файле /bitrix/modules/main/classes/general/update_class.php есть функция __parse(строка примерно 4158). Её задача получать и парсить результат. Находим место, где парсится строка, и вставляем перед циклом регулярку, которая вырезает все description-ы: http://joxi.ru/DmB73v1sJJV9Z2. В данном случае используется конструкция:

$strXMLText = &preg_replace(«#(<description>(.*?)</description>)#is», «», $strXMLText);

Обычно это помогает. Если найдете другие эффективные способы решить данную проблему — пишите сюда :)

Понравилась статья? Поделить с друзьями:

Читайте также:

  • 504 error fix
  • 502 ошибка прокси сервера
  • 503792 10 ошибка
  • 502 ошибка почему возникает
  • 502 ошибка как устранить

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии