1с битрикс настройки php
В очередной раз пришлось повозиться с настройкой Bitrixenv и сайта на нем. В какой-то момент bitrix сайт стал сыпать 500-е ошибки на некоторые операции. По логам было видно, что не хватает памяти для работы некоторых скриптов, хотя раньше хватало. Пришлось заняться расследованием и оптимизацией потребления памяти bitrix сайтом.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.Цели статьи
- Разобраться с потреблением памяти на сервере с bitrixenv - выяснить, кто больше всех потребляет памяти и приводит к нестабильной работе сервера.
- Разобраться, где хранятся настройки различных приложений в bitrixenv.
- Выбрать оптимальные параметры для 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. Посмотрел график и все сразу стало ясно, еще до подключения к серверу.
Зашел на сервер, посмотрел системный лог. Увидел там вот это:
Первое, что я сделал - увеличил swap раздел до объема всей оперативной памяти. До этого он был размером в 1G. Это сразу помогло и предотвратило регулярный приход OOM Killer. А я стал спокойно разбираться, что делать дальше.
План дальнейшей настройки сервера для стабильной работы сайта на bitrix следующий:
- Определяем основных потребителей оперативной памяти.
- Распределяем всю свободную память между ними.
- Убеждаемся, что под нагрузкой все работает корректно, всем хватает памяти, OOM Killer не приходит.
Изменение стандартных настроек BitrixVM
Как я уже говорил, служба bvat автоматически регулирует некоторые настройки стандартных служб bitrixenv. Чтобы применять наши настройки, нужно их указывать в отдельных конфигурационных файлах.
А вот общий список всех основных конфигурационных файлов bitrixenv:
Оптимизация настроек Mysql
На подопытном сервере имеется 12 Гб оперативной памяти. Я решил половину этой памяти отдать под mysql. Приступим к тюнингу конфигурации mysql. В общем случае достаточно будет одного параметра, который в основном отвечает за потребление памяти:
В моем случае этого было недостаточно. Я решил более внимательно подойти к настройке mysql. Нашел неплохой инструмент - MySQLTuner, который анализируя работу 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
Будет один основной процесс, который занимает больше всего памяти и дальше его форки, которые потребляют примерно одинаково. На них и ориентируйтесь. У меня основной процесс потребляет 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. Manage servers in the pool, затем 4. Update packages on host.
- При запросе 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. Manage servers in the pool, затем 8. Update PHP and MySQL.
- Выберите 1. Upgrade PHP:
Читайте также: