1с битрикс настройки php

Обновлено: 06.07.2024

В очередной раз пришлось повозиться с настройкой Bitrixenv и сайта на нем. В какой-то момент bitrix сайт стал сыпать 500-е ошибки на некоторые операции. По логам было видно, что не хватает памяти для работы некоторых скриптов, хотя раньше хватало. Пришлось заняться расследованием и оптимизацией потребления памяти bitrix сайтом.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Цели статьи

  1. Разобраться с потреблением памяти на сервере с bitrixenv - выяснить, кто больше всех потребляет памяти и приводит к нестабильной работе сервера.
  2. Разобраться, где хранятся настройки различных приложений в bitrixenv.
  3. Выбрать оптимальные параметры для apache, mysql, php, nginx для равномерного распределения памяти.

Введение

Вопрос с потреблением памяти mysql при работе в bitrixenv я уже разбирал отдельно некоторое время назад - где хранятся настройки mysql. Рекомендую с ней ознакомиться, так как там информация напрямую относящаяся к текущей теме оптимизации использования памяти сайта на bitrix при работе в bitrixenv.

Разработчики bitrixenv упростили работу системных администраторов по настройке сервера, внедрив службу bvat, которая автоматически при запуске сервера подбирает оптимальные параметры следующих служб:

Настройки будут зависеть от количества доступной оперативной памяти. В целом, это неплохой шаг, который упрощает начальную настройку сервера. Чаще всего конфигурация служб получается адекватной и подохдящей для типовых сайтов.

В моем случае стандартные настройки перестали подходить. На сервере время от времени появлялась нехватка оперативной памяти. Приходил OOM Killer (OOM — Out of memory) и грохал mysql сервер, так как он потреблял больше всего оперативной памяти. Какое-то время все работало нормально, потом провторялось то же самое.

Мое внимание привлекли события из мониторинга Zabbix, такие как Lack of available memory on server. Посмотрел график и все сразу стало ясно, еще до подключения к серверу.

Настройка потребления памяти в bitrix

Зашел на сервер, посмотрел системный лог. Увидел там вот это:

Первое, что я сделал - увеличил swap раздел до объема всей оперативной памяти. До этого он был размером в 1G. Это сразу помогло и предотвратило регулярный приход OOM Killer. А я стал спокойно разбираться, что делать дальше.

План дальнейшей настройки сервера для стабильной работы сайта на bitrix следующий:

  1. Определяем основных потребителей оперативной памяти.
  2. Распределяем всю свободную память между ними.
  3. Убеждаемся, что под нагрузкой все работает корректно, всем хватает памяти, OOM Killer не приходит.

Изменение стандартных настроек BitrixVM

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

А вот общий список всех основных конфигурационных файлов bitrixenv:

Оптимизация настроек Mysql

На подопытном сервере имеется 12 Гб оперативной памяти. Я решил половину этой памяти отдать под mysql. Приступим к тюнингу конфигурации mysql. В общем случае достаточно будет одного параметра, который в основном отвечает за потребление памяти:

В моем случае этого было недостаточно. Я решил более внимательно подойти к настройке mysql. Нашел неплохой инструмент - MySQLTuner, который анализируя работу mysql, выдает некоторые рекомендации по настройке. Сам я не разбираюсь в тонкой настройке mysql, поэтому решил довериться утилите. Судя по отзывам, она неплоха и доверять ей можно, если сам не разбираешься в теме. Забегая вперед скажу, что с помощью этого тюнера я настроил mysql на стабильную работу с фиксированным потребелением памяти. Проблем с этим сервером с тех пор не возникало.

Итак, копируем себе на сервер сам скрипт:

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

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

Оптимизация mysql

У меня уже все оптимизировано под потребленее не более примерно 6 Гб памяти. Расскажу, какие параметры за это отвечают. Как уже сказал ранее, это параметр innodb_buffer_pool_size. В общем случае для mysql сревера рекомендуют указывать этот параметр равный 80% доступной памяти сервера. Но это в том случае, если у вас кроме mysql на этом сервере ничего не крутится. А у нас там полно других служб, поэтому нам такой совет не подходит.

Дальше нам нужно выяснить, сколько памяти занимает thread (процесс, который порождает соединение) и в соотвествии с этим выставить предел числа подключений. Размер thread равен сумме следующих парметров - read_buffer_size + sort_buffer_size + join_buffer_size.

Параметр read_buffer_size установлен по-умолчанию в 128 КБ. Я его не стал трогать. Остальные два я изначально выставил по рекомендациям mysqltuner, а значение max_connections, которое отвечает за максимальное количество подключений, выставил такое, чтобы сумма трех буферов, помноженная на количество подключений не превышала 2 Гб памяти. Сервер немного поработал в таком режиме и выяснилось, что выставленных подключений не хватает. Тогда я снизил join_buffer_size до 18 Мб, а количество подключений увеличил. В итоге остановился на таких настройках.

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

Советы по изменению параметров даются в заключительной секции mysqltuner - Variables to adjust. Не буду приводить свои рекомендации, так как они будут актуальны только для конкретного сервера. Советую посмотреть все рекомендации, почитать описание параметров и попробовать применить их у себя. Слепо не надо менять то, что там советуют.

Приведу список основных параметров mysql, которые влияют на производительность и на которые надо в первую очередь обращать внимание:

  • max_connections
  • log_bin
  • table_open_cache_size
  • table_definitions_cache_size
  • open_files_limit
  • innodb_buffer_pool_size
  • innodb_log_file_size
  • innodb_flush_log_at_trx_commin
  • innodb_flush_method=O_DIRECT

Список взял отсюда. Очень полезная статья, рекомендую.

Оптимизация настроек apache в bitrixenv

Настройка apache prefork в bitrixenv

Оптимизация Apache для Bitrix

Будет один основной процесс, который занимает больше всего памяти и дальше его форки, которые потребляют примерно одинаково. На них и ориентируйтесь. У меня основной процесс потребляет 500 Мб и 30 форков по 100 Мб. В сумме получается 3.5 Гб.

Оптимизация php под bitrix

Из настроек php я бы обратил внимание на следующие параметры:

Так или иначе, эти параметры, кроме sendmail, влияют на производительнойсть сервера и потребление памяти. Не ставьте эти значения слишком большими без особой надобности. Я бы для начала выставил в 256 Мб и увеличивал по мере необходимости. Да, 256 Мб это и так очень много, но сайт на bitrix требует высоких значений этих параметров для корректной работы. 256 мб это общая рекомендация для дефолтных значений.

Свои параметры php вы можете размещать в отдельном конфиге, который не будет перетираться bitrixenv - /etc/php.d/z_bx_custom.ini. После изменения настроек надо перезапускать apache для применения.

Настройка nginx для сайта bitrix

В самом nginx в bitrixenv настраивать для производительности особо нечего. Он работает в качестве proxy сервера для apache. С помощью proxy_pass он перенаправляет все динамические запросы, а сам отдает только статику. В таком режиме работы он потребляет минимум ресурсов и оптимизировать в нем нечего. Если вам все же интересно разобраться в настройках nginx, то читайте мою отдельную подробную статью.

Отдельной настройки требует только модуль Push and Pull, если он у вас используется. Его конфигурация располагается в файле /etc/nginx/bx/conf/push-im_settings.conf. В контексте данной статьи нас интересует только параметр push_stream_shared_memory_size, который отвечает за использование оперативной памяти.

В принципе, дефолтного значения 256 Мб обычно хватает, хотя по сути это небольшие цифры. Но имейте ввиду, что если свободной памяти совсем нет, то можно подрезать этот параметр.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

После оптимизации всех указанных выше параметров в bitrixenv, потребление памяти сервером стабилизировалось. Bitrix сайт стал работать ровно с предсказуемой производительностью без неожиданных тормозов и падений.

Равномерное потребление памяти сервером

На этом у меня все по теме оптимизации настроек сервера под bitrix. Система интересная и многогранная. Всегда любопытно заглянуть под капот bitrixenv. Как по мне, сделано неплохо, хотя и доставляет хлопот при разборе каких-то иницидентов.

В целом считаю, что в общем случае, все сделано удобно и функционально для быстрого запуска bitrix сайта. Справится даже неподготовленный человек, а конкретно какой-нибудь программист. Он бы запарился настраивать эту связку самостоятельно, а тут все из коробки работает. Но вот если возникают проблемы, то разобраться бывает не всегда просто.

Следующим этапом жду появление docker сборок с bitrixenv внутри. Либо один общий образ, либо набор через docker-compose. Это было бы логичное продолжение развития в свете популярности контейнеров и микросервисов.

Курс предназначен для базовой подготовки пользователей, осуществляющих администрирование порталов, созданных на коробочной версии сервиса Битрикс24. Изучение курса позволяет освоить основные методы администрирования системы. Если вы хотите ознакомиться с тем как внедрить наш сервис в работу вашей компании, то для вас создан курс Внедрение корпоративного портала.

Курс предусматривает обучение по двум ролям администраторов: Администратор корпоративного портала и Администратор системы.

Администратор корпоративного портала - пользователь, осуществляющий текущее администрирование уже настроенного и сданного в эксплуатацию портала. Администратор системы - пользователь имеющий полный доступ к настройке системы.

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

При условии качественного изучения материалов курса, по его окончании специалист должен уметь:

  • настраивать модули системы;
  • использовать возможности интерфейса по управлению системой;
  • управлять доступом к системе, сайтами, пользователями, группами пользователей;
  • управлять содержимым портала;
  • работать с инструментами системы;

Начальные требования

Для прохождения курса необходимо:

  • наличие базовых навыков компьютерной грамотности и навыков работы с ОС Windows;
  • наличие представлений о WWW и организации доступа к веб-серверу;
  • базовые навыки установки и администрирования *nix-систем.

Если вам предстоит самостоятельная установка системы, то рекомендуется к изучению курс Установка и настройка.

Администратору системы будет полезно ознакомиться с курсом Разработчик Bitrix Framework, рассказывающем о принципах работы Bitrix Framework.

Примечание. Битрикс24 создан на основе платформы Bitrix Framework, на которой ранее был создан другой продукт "1С-Битрикс: Управление сайтом". В административной части системы сохранена терминология, относящаяся к этому продукту. Поэтому в текущем курсе понятие "сайт" нужно рассматривать как синоним слова "портал".

У нас часто спрашивают, сколько нужно заплатить

Курс полностью бесплатен. Изучение курса, прохождение итоговых тестов и получение сертификатов - ничего из этого оплачивать не нужно.

Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.

Баллы опыта

В конце каждого урока есть кнопка Прочитано! . При клике на неё в Вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится
окно подтверждения:


уроке.

Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат - это если общее число набранных Вами баллов отличается от максимального на 1-2%.

Тесты и сертификат

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

Для преподавания оффлайн

Если данный курс берётся в качестве основы для оффлайного преподавания, то рекомендуемая продолжительность: 10 дней (70 академических часов).

Если нет интернета

iPhone:
FBReader
CoolReader
iBook
Bookmate

Windows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google Chrome

iOS
Marvin for iOS
ShortBook
обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса. Версия файла - от 06.09.2021.

Если вы задумались о повышении производительности вашего сайта на CMS Битрикс, в первую очередь необходимо перенести сайт на сервер с Bitrix7. Создать сервер с системой Bitrix7 можно в вашей панели управления.

Вы можете выполнить перенос самостоятельно или обратиться к нашим специалистам. Все подробности можно найти в статье Перенос сайта на VDS.

Настройка CMS

После переноса сайта можно приступить к настройке CMS.

1. В разделе "Проверка системы" не должно присутствовать каких-либо записей с ошибками.

2. В разделе "Панель производительности" во вкладке Битрикс должно быть значение - "Битрикс (оптимально)".


3. Измените тип таблиц базы данных на InnoDB и выполните оптимизацию базы данных. Предварительно рекомендуем создать резервную копию.

Настройка сервера

Далее можно перейти к настройке сервера.

1. Подключитесь к серверу по SSH с реквизитами пользователя root.

2. Запустите меню виртуального окружения Битрикс командой:

3. Выберите пункт 4 "Configure memcahed servers".

4. Начнется установка memcached. В процессе установки будет запрошен hostname вашего сервера - необходимо указать значение ServerName из выведенной на экране таблицы.

5. После завершения установки настройте конфигурационный файл /etc/sysconfig/memcached .

Откройте файл в текстовом редакторе, например, nano:

Если nano отсутствует, можно установить его командой yum install nano либо использовать имеющийся на сервере редактор (например, vim).

Задайте следующие параметры:

6. Перезапустите службу командой:

7. Подключите memcached в файле /bitrix/php_interface/dbconn.php . Для этого откройте файл:

Вместо " путь_к_каталогу_сайта " укажите корректное значение для вашей системы. Например, при использовании системы Bitrix 7 это путь /home/bitrix/www/ , для VestaCP /home/admin/web/имя_домена , и так далее. Другие варианты можно найти, например, здесь.

Укажите в файле следующие параметры:

8. Откройте файл /bitrix/.settings_extra.php (если файл пока не существует, этой же командой он будет создан):

Укажите в нем следующие параметры:

Обратите внимание, что некорректная настройка memcached может негативно влиять на показатели производительности. Если вы наблюдаете снижение индекса производительности, можно поэкспериментировать со значениями в конфигурационном файле /etc/sysconfig/memcached , который настраивался на шаге 5.

9. Помимо включения memcached, ускорить работу сайта можно путем переноса каталога для временных файлов MySQL в RAM-диск.

Для этого выполните следующие действия:

9.1. Создайте папку для хранения временных файлов, например, /var/lib/mysql/tmp :

9.2. Измените владельца папки и группу на mysql:

9.3. Определите идентификатор пользователя (uid) и группы (gid) mysql:

9.4. Отредактируйте файл /etc/fstab :

В самый конец файла добавьте строку с указанием полученных выше значений:

Параметр size необходимо установить в зависимости от количества имеющейся оперативной памяти.

В данный момент CMS "Битрикс" рекомендует своим пользователям обновить версию PHP до 7.4. Однако в меню BitrixEnv максимальная доступная версия РНР – 7.2.

В инструкции мы рассмотрим, как перейти на PHP 7.4

1. Обновление версии BitrixEnv

Перед началом работы обязательно создайте резервную копию сервера: самостоятельно или с помощью инструмента бэкапов в панели управления.

Далее подключитесь к серверу по SSH и выполните в меню Bitrix следующие действия.

Если версия BitrixEnv ниже 7.4.3

Сначала необходимо обновить версию окружения до 7.4.3. Если вы уже используете эту версию, переходите к разделу Если версия BitrixEnv 7.4.3 или выше.

Для обновления до 7.4.3. выполните:

  1. Выберите пункт 1. Manage servers in the pool, затем 4. Update packages on host.
  2. При запросе Enter server address введите IP-адрес сервера:



Теперь версия окружения - 7.4.3, и вы можете выполнить следующие шаги по инструкции.

Если версия BitrixEnv 7.4.3 или выше

Необходимо обновить версию окружения до 7.4.11. Для этого:

    Выберите пункт 1. Manage servers in the pool, затем 10. Enable or disable bitrix-env beta versions:



Статус running означает, что операция выполняется; finished – операция успешно завершена.


Также может быть указан статус Error. Если обновление привело к некорректной работе ваших проектов, создайте обращение в нашу поддержку, предоставив реквизиты доступа к серверу для анализа проблемы.

После завершения обновления версия окружения изменится на 7.4.11:


2. Обновление версии PHP

В BitrixEnv версии 7.4.11 вы можете изменить версию PHP на 7.4. Для этого:

  1. В основном меню выберите пункт 1. Manage servers in the pool, затем 8. Update PHP and MySQL.
  2. Выберите 1. Upgrade PHP:

Читайте также: