logo

ru_mysql


MySQL по-русски


Previous Entry Share Next Entry
"Подвисание" InnoDB srv_master_thread()
white noise
madm1ke wrote in ru_mysql
Иногда на одном из MySQL-серверов наблюдаю следующее:
InnoDB перестает отвечать на любые запросы (при этом коннекты и запросы accept'ятся, но висят в processlist'е).
InnoDB master thread показывает статусы "flushing log", "making checkpoint", "doing insert buffer merge", "flushing buffer pool pages", "purging", "waiting for buffer pool flush to end" по очереди, порядок я не запоминал.
Сервак очень нагруженный, порядка 3-5 тысяч запросов в секунду в пике. Селектов процентов 60, инсертов/апдейтов/делетов примерно поровну.
Существует мнение, что такое поведение связано вот с чем:
При резком уменьшении нагрузки (в коде есть коммент, что это происходит при "less than 5 i/os during the one second sleep") srv_master_thread() решает flush'ить логи и пр. При этом ставит mutex и перестает отвечать на запросы. Естественно, при этом количество io/s уменьшается (логи сбрасываются в один поток и есть еще какие-то причины, которых я пока не понял), и этот процесс идет до конца - пока не сбросятся все логи.
Естественно, такое поведение мне не очень нравится, так что если кто сталкивался с такой ситуацией - напишите, плиз, как вы решали такой трабл, буду благодарен. Гугль и пр. результатов не дали, подозреваю, что я единственный такой :(
Да, mysql-4.1.15-standart@x86_64. Ни на каких других серверах проблема не появляется и не воспроизводится, видимо, недостаточно нагрузки.

Ты бы SHOW INNODB STATUS приложил а то так сложно понять
плюс 4.1.15 это наверное годовалой давности - если будешь репортить баги скорее всего сначала попросят до последнего 5.1 обновится

Касаемо сборса логов - логи сбрасываются раз в секунду в любом случае ты наверное имеешь ввиду сброс грязных буфферов

Можешь поиграть с innodb_max_dirty_pages_pct чтобы сброс был более равномерный

Про багзиллу - конечно. Но апдейтиться я немного боюсь, видимо, так же, как и ты :)
Про логи я понимаю, там, видимо, сбрасываются именно modified pages и буфер логов.

Сейчас innodb_max_dirty_pages_pct=90. По innodb status количество modified DB pages не превышает 30%...
К слову, проблема старая, у меня возникает регулярно уже не первый месяц. Наблюдается и при modified DB pages=10%, и при 5%...

PS. Почитал diff'ы между 4.1.15 и например, mysql-4.1.23-nightly-20061205 - в этой части изменений нет, так что апгрейд внутри ветки вряд ли поможет :(

Я про то что сброс буфера логов это обычно фигня - он и так сбрасывается раз в секунду да и сброс это запись обычно последовательно нескольких сот KB

В общем надо SHOW INNODB STATUS смотреть реально без него сложно что-то сказать

Да ICQ глючит что-то не шлет лично тебе сообщения
pz у меня мыл от моего блоговского домена :)

You are viewing ru_mysql