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.

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

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

  1. Валерий 07.11.2016 Ответить
    Доброго времени. А как автогенерацию отключить, она на агенте висит? В настройках генерации есть кнопка "запустить" и ничего нет про автогенерацию.
  2. Дмитрий
    Дмитрий 07.11.2016 Ответить
    Вечер добрый!
    Валерий, обратите внимание на кнопку "бутерброд", находящуюся на противоположной стороне от "запустить". В контекстном меню кнопки нажмите на "Редактировать".
    Далее откроется страница редактирования, на ней вас интересует третий таб "Инфоблоки".
    Далее все предельно ясно отключаем генерацию у нужных ИБ и сохраняемся. Подсказка есть в первом скрине данного поста.
    После сохранения обязательно запустите генерацию карты сайта чтобы изменения вступили в силу.
  3. Сергей 08.12.2017 Ответить
    Добрый день, Дмитрий!
    Вы не в курсе, на данный момент данный модуль ведёт себя так же?
    Или за год что-то изменилось в лучшую сторону?)
  4. Дмитрий
    Дмитрий 13.12.2017 Ответить
    Честно говоря не в курсе, если узнаете - напишите в комментах результат исследования.
    Возможно я исследую этот вопрос еще раз, но будет это на новогодних праздниках, сейчас со временем туго.
  5. Анастасия 09.01.2018 Ответить
    Может быть есть какая-нибудь настройка автогенерации, чтобы не создавался новый файл partN.xml а заменялся существующий?
  6. Дмитрий
    Дмитрий 09.01.2018 Ответить
    Такой настройки нет, только что воссоздал ситуацию с partN, даже при ручном перезапуске система его не тронула, перезаписала корневые файлы, а N оставила.
    Напрашивается костыль в виде агента который бы сносил раз в сутки все карты сайта, а затем генерил их по новой.
  7. Дмитрий 26.03.2019 Ответить
    Материал датирован июлем 2016 года. Буквально вчера получил ответ ТП:
    "Добрый день!

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

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

    С уважением,
    специалист техподдержки
    Лысаковский Илья."
    ( https://c2n.me/40DqbOi )

    Так что прогресс не стоит на месте. Движемся в светлое и далекое будущее...
  8. Игорь 21.09.2019 Ответить
    21 сентября 2019 года. Проблема так и остается ))
    Пришлось скопировать тот скрипт который делает генерацию /bitrix/modules/seo/admin/seo_sitemap_run.php
    Модернизировать его, чтобы работал без пошаговости и не выводил на экран результат шага и запускать его с крона. В общем немного попрограммировать придется. Просто функции запуска в коробке нет.
  9. Виктор
    Виктор 23.09.2019 Ответить
    снимете галочку с автогенерации, при генерации ручками проблемы нет.
  10. Олег 07.10.2019 Ответить
    Свиридова можно было и не замазывать, пусть страна знает своих героев!