Что делать если Bitrix MySQL использует все ресурсы процессора

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

Провалы на графике это ручной перезапуск службы MySQL

Причина утечки процессорных ресурсов под MySQL

В поисках причины были исследованы длинные запросы к БД и перепробваны различные комбинации настроек MySQL, но ничего не получилось выявить и не получилось добиться стабильной работы сервера…

Путем исключения удалось найти виновника данного хулиганства, им оказался типовой файл cron_event.php. Проблема оказалась на самом видном месте, но почему-то я вупор этого не видел в самом начале. Все дело в том, что в типовом файле cron_event.php определяется параметр PHP

set_time_limit(0);

Что собственно означает, что выполнение запросов не лимитировано по времени. И в следствие чего какие-то функции зависали и продолжали находиться в запущенном состоянии не выгружаясь и не освобождая ресурсы.

Решение проблемы захвата 100% процессора службой MySQL

Решается данная проблема в три действия:

  1. копируем файл cron_event.php в папку /local/php_interface/
  2. меняем значение “0” на “60” в функции set_time_limit
  3. меняем путь в плариновщике заданий CRON на новый путь <путь от корня до папки сайта>/local/php_interface/cron_event.php

Таким образом мы задаем лимит в 60 секунд на выполнение скрипта. Однако, если вы знаете, что вам нужно установить больший лимит времени для выполнения PHP скприптов, то можно установить нужный интервал в фукнции set_time_limit.

Еще один важный момент, по возможности рекомендую установить версию PHP 8.1. На этой версии, в отичии от 8.2 и 8.3 скрипты работают стабильней и меньше нагружают сервер.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Посты по теме

CRON для сайта

Как сделать свой сайт быстрее и эффективнее путем настройки фоновых заданий на CRON

Настройка CRON для VtigerCRM

Для того, чтобы правильно работали фоновые задания в CRM системе обязаельно нужно настроить запуск исполняющего файла по CRON. Для этого в VtigerCRM есть специальные файлы для Linux и Windows серверов Все что нужно сделать, это добваить в планировщик CRON на линксовом сервере выполнение задачи ~/cron/vtigercron.sh с интервалом 1 раз в минуту.

Исправление PHP Parse error: Unclosed '{' on line в Битриксе

Иногда в Битриксе может возникать ошибка “PHP Parse error: Unclosed ‘{‘ on line …”. Обычно такую ошибку можно обнаружить после переезда на новый хостинг. Для испраления этой ошибки необходимо установить значение on параметра short_open_tag в настройках PHP. Делается это в панели управления хостингом.

Как изменить язык сайта Битрикс для раздела или страницы

Легкий способ локально изменить ящык сайта Bitrix для отдельных страниц или разделов без применения механизма многосайтовости.