Обмен 1с битрикс ошибка 504

 

Здравствуйте! Есть обмен между УТ 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 не повторится.

 

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

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

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

 

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

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

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

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

 

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

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

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

#9

28.02.2014 14:53:39

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

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

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

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

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

 

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

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

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

 

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

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

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

#11

03.03.2014 11:18:47

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

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

 

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

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

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

#12

18.05.2016 08:17:37

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

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

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

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

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

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

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

 

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

Эксперт

Сообщений: 849
Баллов: 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,

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

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

Iblock\PropertyIndex\Manager::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 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 конфиг хранится по следующему пути \etc\nginx\nginx.conf
  • Логи сайта храниятся в папке \var\www\www-root\data\logs\

В моем случае это не помогло. Ошибка 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 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).

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

Ошибка 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

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

Понравилась статья? Поделить с друзьями:
  • Обманом и ошибкой значения выражения
  • Обновление windows 7 код ошибки 80244010
  • Обманка ошибки 0141
  • Обновление windows 10 ошибка 0xc1900215
  • Обман ошибка чем похожи