Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день.
Ситуация такова, есть сайт на joomla 2.5.
Используется БД MYSQL (Server version: 5.1.66-log FreeBSD port: mysql-server-5.1.66).
Размер базы 317Mb.
Основная масса таблиц - InnoDB, есть несколько MEMORY и MyISAM.
Все ето крутится на дедике 2,4Ггц 2Гб
Проблема заключается в большом времени отклика сайта (от 0,1 до 15 секунд).
Путем нехитрого мониторинга и звонков в тех.поддержку было выявлено бутылочное горлышко - MYSQL.
Сервер создает огромную нагрузку на дисковую подсистему gstat сообщает о загрузке в 150% (пик).
Так как я не слишком большой специалист в настройке LAMP серверов, то я закономерно думаю что накосячил где в настройках MYSQL, но где, найти не могу.
Cвой my.cnf прикрепил к топику.
Буду очень признателен за советы или направление в сторону правильного мануала по оптимизации.
Неактивен
Файловая система уже следствие перегруженности БД. Нужно искать узкие места, см., например, ботанический определитель узких мест.
Неактивен
Обратить внимание на переменные innodb_buffer_pool_size и flux_log_at_trx_commit
Неактивен
Пробовал читать
rgbeast написал:
"ботанический определитель узких мест."
но ничего не понял...
rgbeast написал:
innodb_buffer_pool_size
По етому поводу нашол статейку. Попробовал добавить в my.cnf строку "innodb_buffer_pool_size 200М" и после перезапуска сервер mysql упал секунды через три . (Свободной оперативы по показаниям top`a достаточно). Закоментил строчку перезапустил - заработал.
Почитал лог но там только выполненые запросы про падение сервера ничего не нашол. Почитал гугл, добавил в конфиг директиву "log_error=/var/log/mysql_error.log", опять включил "innodb_buffer_pool_size 200М", перезагрузил сервак, а в логе пусто . Может log_error не работает? Где вообще можно почитать лог сервера? Или где его включить?
И по поводу "innodb_buffer_pool_size", он ведь никак не связан с "query_cache_size"?
Тоесть, нужно включать и то и то, или только что-то одно? Судя по названиям первая директива включает кеширование таблиц innodb, а вторая кеширование запросов и должны работать обе?
И еще момент, где-то я встречал фразу
сервер mysql собраный на фре из портов ето фигня ибо порты там кривые, нужно скачать его с оф.сайта и собрать самому"
сколько в ней истины?
Отредактированно dozornuy (16.10.2013 12:06:50)
Неактивен
Точно не опечатка в конфиге? В приведенном примере нет знака равно
innodb_buffer_pool_size=200М
Неактивен
Блински, я олень натурально....
Было без равно и в конфиге.
Поправил, вроде полегче стало. Дня 2-3 помониторю и отпишусь.
Спасибо за внимательность!
Неактивен
200 это не предел, можно и 500, если есть память.
еще попробуйте
innodb_flush_log_at_trx_commit=0
Неактивен
innodb_flush_log_at_trx_commit=0 - добавил в конфиг.
на 500 оперативы свободной не хватит уже
смотрю за нагрузкой.
кроме gstat больше нечем ведь проверить нельзя?
Неактивен
Как смотрите оперативную память? Если в top, то там есть раздел cached - это память дискового кэша, которая может быть освобождена в любой момент. Ее следует считать свободной.
Еще есть утилита iostat. Дополнительно, можете включить лог медленных запросов, а потом строить дайджест командой pt-query-digest ( http://www.percona.com/doc/percona-tool … igest.html )
Неактивен
Добавил кєша до 500Мб.
Нагрузка упала до 10% максимум.
Спасибо за помощь. Тему можно закрывать
Неактивен