Приветствую. Хочу поделится радостью: удалось оптимизировать работу MySQL.
В БУС монитор производительности на мощном сервере показывал следуюшее:
База данных MySQL (запись) 72 5 600 количество запросов на запись в секунду
База данных MySQL (чтение) 5 869 7 800 количество запросов на чтение в секунду
База данных MySQL (изменение) 4 251 5 800 количество запросов на изменение в секунду
Чего я только с настройками мускуля не крутил, ничего сильно ощутимого результата не давало.
Но нашлась все-таки одна настроечка, которая ну очень сильно меня обрадовала: innodb_flush_log_at_trx_commit=2 После того как я ее прописал, получил следующие циферки:
База данных MySQL (запись) 4 395 5 600 количество запросов на запись в секунду
База данных MySQL (чтение) 6 220 7 800 количество запросов на чтение в секунду
База данных MySQL (изменение) 4 643 5 800 количество запросов на изменение в секунду
Увелечение скорости записи в 60 раз меня ну очень обрадовало.
innodb_flush_log_at_trx_commit - Вам кажется, что InnoDB в сто раз медленнее MyISAM? Вероятно, вы забыли изменить значение этого параметра. Значение по умолчанию 1 означает, что после каждой завершенной транзакции (или после изменения состояния транзакции) лог должен быть сброшен на диск. Это достаточно дорогая операция, особенно если у вас нет Battery backed up cache. Многие приложения, особенно те, в которых раньше использовался MyISAM будут хорошо работать при значении 2, который означает, что не надо сбрасывать буфер на диск, а следует отправить его в кэш операционной системы. Лог по-прежнему будет сбрасываться на диск каждую секунду и максимум, что вы можете потерять - это 1-2 секунды записей. Значение 0 обеспечивает более высокую скорость, но и более низкую надежность. Есть вероятность потерять транзакции даже при падении mysql-сервера. При значении равном 2 единственная возможность потерять данные - это фатальный сбой операционной системы.
Немного передохнем и продолжим оптимизировать. Надеюсь тема не баян, и будет полезна. Обновление Руководство по настройке и установке уже рекомендует ставить innodb_flush_log_at_trx_commit=0
С созданием "Монитора производительности" - получился позитивный эфект - все стали выкладывать логи производительности - "У кого круче?" Это ни может ни радовать, все стали заморачиваться с оптимизацией, капаться в конфигах и как следствие поднимать производительность сайтов (это и раньше было, но теперь это приобрело очертания "Соц.соревнования"), теперь слухи о том, что битрикс медленный, тяжелый и неповоротливый уйдут в прошлое.
Ну вопрос производительности всегда стоял остро. Теперь появился инструмент, который показывает как обстоят дела в целом. И видно что можно подкрутить.
Опишу Проц Core2Duo E8400 (3.0Ghz), память - 6Gb (ddr3), жесткий 2x500Gb (сата2, рейд) Если честно, то на подобной конфе хотелось цифры по-вкуснее Я так понимаю, еще есть куда стремиться.
У меня на Битрикс сложилась следующая ситуация: после довольно резкого увеличения посещаемости на сайте, база начала выбрасывать ошибку, а сайт, соответственно, переставал функционировать.
Решил подтюнить базу. Для начала, прописал все рекомендуемые параметры конфига из Панели производительности. Прироста не дало. Переконвертил все таблицы из MyISAM в InnoDB - общий индекс производительности вырос в два раза, но при этом почему-то параметры базы данных (именно запись) упали в два раза:
Не могли бы Вы показать весь свой конфиг my.cnf, чтобы можно было оптимально подобрать параметры и увеличить тем самым скорость чтения/записи. Заранее спасибо за любую помощь.
Попробуйте выставить innodb_flush_log_at_trx_commit=0 Это немного поднимет скорость. Проблема настройки MySQL на скорость работы аналогичная. Выложите кто полный конфиг мускула на InnoDB с указанием оперативки в Вашей системе.
ну это вообще верная настройка, я сам всегда так и делаю, но в ней кроется опасность. вы должны понимать что она влияет на стабильность всей базы. при падении сервака у вас может порушиться вся база и восстановить ей не всегда получается.
Сброс логов buffer_pool'а - innodb-flush-log-at-trx-commit можно выставить в значении 2. В этом случае логи будут сбрасываться достаточно часто, но не на каждый коммит.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».