1С-Битрикс: автогенерация sitemap.xml — danger!

Уже не помню в какой версии, но в БУС появилась замечательная штука — автогенерация карты сайта из секций и элементов инфоблоков (screenshot 1). Эту функцию давно ждали все, кто хотел держать карту сайта в актуальном состоянии.
Автогенератор действительно работает и до последнего времени он не вызывал каких-то вопросов.

Вопросов бы и не возникло, но у нас появился проект на котором постоянно активируются и деактивируются элементы инфоблоков.

Настройки автогенерации карты сайта в bitrixScreenshot 1.

Кейс: медленно работает обмен с 1с, настолько медленно что падает по таймауту в полчаса.

Казалось бы, причем тут sitemap.xml и SEO модуль?
Пришлось разбираться, обмен стал тупить как нештатный, так и родной, изменений в нештатном обмене за последние 2 месяца не производилось, система не обновлялась — из этого можно сделать вывод что косяк находятся за пределами непосредственно обмена.

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

Но как это обычно и бывает, за разгадками мы лезем сразу в глубь, не замечая при этом того что творится под носом!
В один прекрасный момент кто-то обратил внимание на sitemap.xml, точнее на их количество и суммарный вес.

Количество файлов не вспомню, но их было много (screenshot 2), а суммарный вес превышал 500 мегабайт!

Как так вышло? Oo

Все дело в SEO модуле и его классе генерации и апдейта карты сайта.
Каждый раз когда элемент инфоблока деактивируется или удаляется, в карте сайта строка с url этого элемента заменяется на пробелы! (screenshot 3)

И ладно бы они удалялись из этих карт сайта, нет! Эти пробелы останутся в карте сайта до тех пор пока не будет запущена полная перегенерация всех карт сайта!

Пример дырявой карты сайтаScreenshot 3.

Неожиданно да? Автоматическая генерация карты сайта = автоматическое забивание места на хосте =)
Тут кстати и нарисовался ответ на вопрос относительно упавшей производительности обмена, пока SEO модуль прочесывал полгига xml файлов, проходила целая вечность.

Я подумал, что проблема может быть решена в более поздних версиях БУС, но в 16-й версии все ровно также!

Недолго думая я отключил автогенерацию карты сайта, сгенерил ее руками и пошел писать в саппорт. (screenshot 4)

Скриншот тикета в саппорт bitrixScreenshot 4.

Мягко говоря ответ поддержки меня удивил. Получается что пробелы из карты сайта не удаляются намерено и сделано это для того чтобы избежать лишней нагрузки на сервер. Но то что это накладывает отпечаток на последующую генерацию карты сайта никто не задумался? Или хотя бы предупреждение повесить, мол - "будьте осторожны и периодически запускайте генерацию карты сайта руками, а то она автоматически раздувается до неприличных размеров".

Итог

Если у вас часто деактивируются и удаляются элементы инфоблока то прямо сейчас отключайте автогенерацию карты сайта из инфоблоков!
Ну и ждем правок в SEO модуле, из моего тикета сделали заявку в отдел разработки, ждать правда наверняка придется долго.

Update от 22.10.2016

Спустя 3 месяца и 10 дней мой автоматический тикет был закрыт с пометкой "не является ошибкой"...
Все нормально парни! Живем как и раньше, sitemap.xml в 500 мегабайт это норма!

Скриншот закрытого тикета в саппорт bitrixScreenshot 5.

Комментарии (2)

  1. Валерий 07.11.2016 Ответить
    Доброго времени. А как автогенерацию отключить, она на агенте висит? В настройках генерации есть кнопка "запустить" и ничего нет про автогенерацию.
  2. Дмитрий
    Дмитрий 07.11.2016 Ответить
    Вечер добрый!
    Валерий, обратите внимание на кнопку "бутерброд", находящуюся на противоположной стороне от "запустить". В контекстном меню кнопки нажмите на "Редактировать".
    Далее откроется страница редактирования, на ней вас интересует третий таб "Инфоблоки".
    Далее все предельно ясно отключаем генерацию у нужных ИБ и сохраняемся. Подсказка есть в первом скрине данного поста.
    После сохранения обязательно запустите генерацию карты сайта чтобы изменения вступили в силу.

Оставить комментарий