Рубрика: Bitrix

  • Исправление 504 Gateway Timeout

    Продолжение поста

    Перезагрузка это временное решение и всегда надо искать причину зависаний.

    На днях исправлял случай с 504 ошибкой у клиентского сайта. Начал изучать причины.

    1. Битрикс не обновленный до последней версии.
    2. Запустил мониторинг производительности. Бал 60+. Очень даже хорошо.
    3. Не везде включено кеширование. Включил, проблема 504 не исчезла.
    4. Запустил тест на нагрузку по страницам. Нашел один компонент, который генерил 1000+ запросов SQL при четырех элементах. Поправил, проблема 504 не исчезла.
    5. Анализ посещений пользователей ничего не дал, всё как обычно.
    6. По инструкции Битрикс «Блокировки сессий в веб-проектах» сделал AWK скрипт на поиск «паровозиков»  забивающих PHP-воркеры. Параллельно установил lsof. Занес это дело в крон c kill процессов. Решение также было временное, но хотя бы сайт не должен был висеть. Кстати с кроном тоже не всё прошло идеально — но тут больше моя невнимательность в правах, владельцах и папках размещения.
    7. Посмотрел отдельно пользователей и опа! — зарегистрированные пользователи формата bitrixsupport_1234@mail.ru с последней авторизацией в момент зависания сервера. Вот оно!
    8. Во-первых пользователей быть вообще не должно. Убрал галочку с «можно регистрироваться в система». Убрал возможность вообще использовать get параметр /?register=yes.
    9. Во-вторых стало проще найти дыру в безопасности. Снес модуль «лендинги»(не использовался) и закрыл возможность перехода на скрипт /bitrix/tools/landing/ajax.php.

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

  • Urlrewrite Битрикс

    На одном сайте не работал urlrewrite. Была задача настроить. Начал смотреть по шагам: 1) в htaccess строчки есть

    2) Файл urlrewrite есть, заполнен верно, CODE есть. CODE на локальной версии подцепляется, да и в целом всё работает.

    3) Понял, что работает nginx а не Apache. В настройках nginx слабоват, поэтому пошел гуглить. Наверное слово гуглить уже неактуально, пошел использовать все варианты кроме гугла: мануалы, obsidian, deepseek.

    https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=32&LESSON_ID=3367 — основная страница в битрикс help не помогла

    еще посмотрел порядка 10 сайтов — не помогли

    4) Пошел писать запросы в deepseek. Среди такого полотна понадобилась одна строчка для решения моей задачи.

    Итог:

    location / {
        try_files $uri $uri/ /bitrix/urlrewrite.php;
    }
  • Новый баг в Битриксе

    Надписи исчезли во время работы. Обновление страницы не помогают.

    Старый баг лучше новых двух.

  • [ОШИБКА] Warning: «continue» targeting switch is equivalent to «break». Did you mean to use «continue 2»?

    Распаковал старый архив проекта на Битрикс и словил ошибку в админке, которая появляется в инфоблоках:

    Warning: «continue» targeting switch is equivalent to «break». Did you mean to use «continue 2»?

    Причина:
    Слишком новый PHP.

    Решение:
    Сделать откат версии PHP. Поставил в настройках php5.6 (был 7+) и всё заработало.

Автор блога:
Дмитрий Шарынин

dimos.ru