Меню

bitrix где настройки mysql

Bitrix где настройки mysql

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

В курсе рассматриваются требования платформы Bitrix Framework к хостингу, вопросы установки, настройки продукта а также вопросы инструментов и методов оптимизации серверов и баз данных для работы с системой

Для хостеров не является обязательным, но рекомендуется изучение курсов Контент-менеджер и Администратор. Базовый для получения более полного представления о возможностях системы и способах работы с ней.

Рекомендуется ознакомиться с опытом настройки и тестирования серверов в блогах Александра Демидова и Дениса Шаромова, а так же с отзывами клиентов о хостингах в группе Черный и белый список хостингов социальной сети компании «1С-Битрикс».

Если ваш хостинг на Windows, то вам может быть полезна группа 1С-Битрикс на платформе Windows Server 2008 в социальной сети сайта «1С-Битрикс». В ней пользователи делятся опытом работы системы на IIS 7.

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

На каждой странице курса авторизованный на сайте посетитель может дать комментарий к содержимому страницы. Комментарий — не форум, там не ведётся обсуждений или разъяснений. Это инструмент для сообщений нам об ошибках, неточностях. Для отправки комментария воспользуйтесь расположенной в правом нижнем углу окна браузера кнопкой:

Скачать материалы курса в формате CHM. Файлы формата CHM обновляются ежемесячно, тем не менее, возможно некоторое отставание их от онлайновой версии курса.

Чтобы отключить подобное отношение к файлу необходимо:

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

Отсутствие кнопки Разблокировать возможно в двух случаях:

  1. Файл лежит не локально, а на сетевом ресурсе.
  2. Если файл лежит на локальном диске, но путь к нему содержит спецсимволы (# и прочие).

источник

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

Производительность базы данных — одна из наиболее важных составных частей общей производительности проекта на 1С-Битрикс. С помощью настройки параметров базы данных можно иногда получить немалый прирост скорости загрузки страниц сайта, которая, как показывает практика, очень сильно влияет на общее впечатление о сайте и его конверсию. Многие посетители вообще не дожидаются загрузки страницы, если она грузится слишком долго, и раньше закрывают вкладку браузера или возвращаются на предыдущую страницу.
[spoiler]
Установка типа таблиц

Для начала необходимо убедиться, что таблицы mysql имеют тип InnoDB, а не MyISAM. Для этого можно перейти в административной панели битрикс на страницу Настройки > Инструменты > SQL запрос и ввести команду SHOW TABLE STATUS (тип таблиц будет отображаться во втором столбце):

Если таблицы имеют тип MyISAM, то их можно сконвертировать в InnoDB либо при помощи команды ALTER TABLE , type=InnoDB, либо перейти Настройки > Производительность > Таблицы, выбрать внизу страницы «Для всех», и выбрать в выпадающем списке «Преобразовать в InnoDB»:

Как устанавливать параметры Mysql

Смотрим файл /etc/init.d/mysql и находим параметр CONF — в нем находится путь к файлу конфигурации mysql (обычно это /etc/mysql/my.cnf).

Собственно параметры mysql можно устанавливать не в любом месте файла my.cnf, а только после директивы [mysqld].

Чтобы параметры вступили в силу, нужно перезапустить сервер mysql. Сделать это можно при помощи команды /etc/init.d/mysql restart (Debian, Ubuntu) или /etc/init.d/mysqld restart (Fedora, Cent OS).

Посмотреть текущие параметры всегда можно при помощи команды mysqladmin variables -pPASSWORD, где PASSWORD — root пароль для mysql.

Наиболее важные параметры

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

Параметры для типа таблиц InnoDB

Параметры для типа таблиц MyISAM

Какие значения данных параметров устанавливать — отчасти ответить на этот вопрос поможет также модуль «Монитор производительности» (Настройки > Производительность > Сервер БД), отчасти — эксперимент и опыт.

источник

Где хранятся настройки mysql в bitrix env и как их изменять

Я периодически работаю с сайтами на битрикс, которые работают в готовом web окружении от разработчиков. Сегодня я поделюсь информацией о том, где хранятся и как изменять настройки mysql на сервере с bitrix env. Многие простые вещи становятся очень сложными, если ты не знаком с нюансами работы этого окружения.

Проверяем, кто занимает всю память на сервере

Я столкнулся с неожиданным поведением сервера, на котором работал сайт на битриксе. Длительное время он работал, занимая всю доступную оперативную память. Я получал об этом уведомления от заббикса, но не обращал большого внимания на сервер, так как в целом это нормальная ситуация, когда у тебя mysql и apache трудятся вместе. Где-то пол года он работал нормально, а потом стал сильно деградировать по производительности. В общем, начались настоящие проблемы.

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

Не удивился, увидев, что mysql. Первое, что сделал — перезапустил его и стал наблюдать. Увидел такую картинку в zabbix.

Дальше сервер кушал весь своп и прибивал процесс mysql с сообщением в системном логе:

Читайте также:  net snmp windows установка

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

Где в bitrix env настройки mysql

Для начала нужно было проверить, где на сервере с bitrixenv хранятся настройки mysql. По аналогии с остальными настройками (php, apache, nginx), предвкушал долгие поиски и не ошибся. В итоге выяснил, что хранятся они в файле /etc/mysql/conf.d/bvat.cnf. Но мало узнать, где они хранятся. Как оказалось, этот файл формируется динамически при каждом запуске сервера, в зависимости от доступной оперативной памяти. Тут то я и понял, в чем проблема. Расскажу обо всем по порядку.

В bitrix env есть служба под названием bvat. Она стартует при загрузке сервера через /etc/init.d/bvat. Эта служба определяет количество оперативной памяти на сервере и в зависимости от этого меняет некоторые настройки web окружения. В частности mysql, php, apache. Можно посмотреть этот скрипт, чтобы понять, что он делает. Если кратко, то он запускает скрипт /etc/ansible/library/bx_perf, который подключает некоторые переменные и формирует новые конфиги. Свою работу логирует в файле /opt/webdir/logs/bvat.log.

В моем случае bvat не изменял конфиг для mysql. Я проверил документацию по нему на сайте битрикса. Четко сказано, что он работает при загрузке системы. Я запускал руками те проверки из скрипта, что должны менять именно mysql конфиг. Удалял конфиг, но bvat неизменно создавал новый конфиг, из расчета, что на сервере 16Гб памяти. Это так и было на момент первоначальной установки. Но со временем гипервизор нагрузили и память сделали динамическую, уменьшив максимально доступную.

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

Когда я все понял, сделал виртуальной машине статическую память (меньше 16Гб) и перезагрузился. Но конфиг mysql не изменился. Тут явно какой-то глюк. bvat по прежнему откуда-то доставал 16Гб памяти и на основе их рисовал конфиг. Я просмотрел весь скрипт. Там используется несколько проверок памяти. Я посмотрел основную, через free -m, она показывает корректное значение, которое меньше 16Гб, но bvat откуда-то берет другое число. Я не стал разбираться с этим, так как налицо баг, который скорее всего либо уже исправлен, либо будет исправлен после какого-нибудь обновления.

Как изменить настройки mysql в bitrixenv

Для того, чтобы руками изменить какие-то параметры в mysql, которые не будут изменяться динамически, необходимо воспользоваться файлом /etc/mysql/conf.d/z_bx_custom.cnf. Основной параметр, который приводит к тому, что mysql занимает всю оперативную память — innodb_buffer_pool_size. В первую очередь следует переназначить именно его. Сделать где-то в треть реальной оперативной памяти. С остальными параметрами надо разбираться отдельно. Я не стал тратить на это время, пока временно отдал серверу первоначальный объем памяти в 16Гб. В ближайшее время обновлю полностью сервер вместе с bitrix env и посмотрю, исчез ли глюк с тем, что память определяется неправильно. Если нет, буду руками выставлять параметры под реальную оперативную память сервера.

Заключение

К bitrixenv у меня неоднозначное отношение. С одной стороны удобно, что все собрано в одном месте, связано друг с другом и быстро устанавливается, настраивается. Но когда нужно дебажить какие-то проблемы, уходит в разы больше времени, чем если бы ты использовал классический веб сервер, настроенный собственноручно. Сейчас я уже неплохо ориентируюсь в bitrixenv, решаю вопросы быстро, но с mysql столкнулся впервые. Обычно там проблемы с конфигами php, apache, nginx, с отправкой почты.

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

источник

BitrixEnv — оптимизация настроек сервера под сайт на bitrix

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

Цели статьи

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

Введение

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

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

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

Читайте также:  настройки eleaf istick tc60w

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

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

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

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

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

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

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

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

  • MySQL — /etc/mysql/conf.d/z_bx_custom.cnf
  • Apache — /etc/httpd/bx/custom/z_bx_custom.conf
  • nginx — /etc/nginx/bx/conf/z_bx_custom.conf
  • PHP — /etc/php.d/z_bx_custom.ini

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

  • /etc/php.d/bitrixenv.ini — основные настройки php
  • /etc/httpd/bx/conf/prefork.conf — параметры модуля Apache — MPM prefork;
  • /etc/php.d/z_bx_custom.ini — пользовательские настройки PHP;
  • /etc/httpd/bx/custom/z_bx_custom.conf — пользовательские настройки Apache;
  • /etc/mysql/conf.d/z_bx_custom.cnf — пользовательские настройки MySQL;
  • /etc/nginx/bx/conf/z_bx_custom.conf -пользовательские настройки nginx;
  • /etc/nginx/bx/conf/push-im_settings.conf — настройки nginx-push-stream-module.

Оптимизация настроек 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 Мб, а количество подключений увеличил. В итоге остановился на таких настройках.

С такими настройками максимальное потребление памяти службой mysql не будет превышать 6.8 Гб, о чем подсказывает вывод mysqltuner. Конкретно моему сайту 70 подключений к mysql достаточно. До этого поставил 50, были сообщения о нехватке подключений. На своем сервере выбирайте параметры сами, у меня не копируйте.

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

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

Читайте также:  настройка aimbot для css v34

Приведу список основных параметров 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

Дальше переходим ко второму основному потребителю оперативной памяти на сервере с сайтом на bitrix — apache. Ему, как и для mysql, служба bvat автоматически выставляет некоторые настройки. Она хранятся в файле /etc/httpd/bx/conf/prefork.conf. Нас будут интересовать настройки, касающиеся количества запущенных процессов.

Чтобы узнать, количество запущенных процессов httpd, обслуживающих работу bitrix сайта, введите в консоли сервера команду:

Вы получите число, на 2 больше, чем указано в приведенном конфиге, в параметрах модуля mpm_prefork. В моем случае bvat выставлял максимально возможное количество процессов httpd равное 60, но для меня это было слишком много, сервер не тянул такое количество процессов. Я его уменьшил до 30.

Как вы понимаете, в зависимости от bitrix сайта, один процесс httpd будет использовать разное количество памяти, поэтому автоматически невозможно выставить этот параметр корректно для всех сайтов. В данном случае, дефолтный параметр мне не подошел, поэтому я создал свой файл настроек httpd — /etc/httpd/bx/custom/z_bx_custom.conf.

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

Посмотреть, сколькло памяти занимает один процесс httpd можно в htop или с помощью команды:

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

Итого в пике у меня 6.5 Гб использует mysql и 3.5 Гб использует httpd, итого 10 Гб из доступных 12-ти. На практике, свободной памяти обычно больше, чем 2 Гб, так как mysql чаще всего потребляет ниже максимального предела.

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

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

  • memory_limit — максимальное количетсво памяти на выполнение php скрипта;
  • sendmail_path — управляет параметрами отправки сообщений, хотя к теме текущей статьи и не имеет отношение;
  • post_max_size — максимальный размер данных для всего POST запроса;
  • upload_max_filesize — максимальный размер файла для загрузки через POST запрос;
  • max_execution_time — максимальное время в секундах, в течение которого скрипт должен полностью загрузиться.

Так или иначе, эти параметры, кроме 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. Это было бы логичное продолжение развития в свете популярности контейнеров и микросервисов.

источник

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

Adblock
detector