SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 24.11.2011 12:15:30

sda
Участник
Зарегистрирован: 24.11.2011
Сообщений: 4

MySQL на двухпроцессорной конфигурации под Windows 2008

Ситуация такая. Есть простенький сервер Intel Core 2 Duo E4700 с 8Gb памяти и SATA 500Gb WD RE4
В последнее время увеличилась нагрузка на базу. CPU в среднем 50%, в пиках ясно дело все 100%,
заметно подтормаживает, но работает. База 8Gb.

Решили подстраховаться и перенести все на систему помощнее:
dual CPU Intel Xeon E5607, 24Gb RAM, LSI MEGA RAID 10 на SAS дисках.

Настроил репликацию на новый сервер, переключил нагрузку. И что бы вы думали - через минуту сайт в дауне, в процессах mysql висит порядка 100 процессов (против 10 на старом сервере). загрузка дисковой системы до 100%.  Такое ощущение что буфер INNODB вообще не работает (хотя Buffer pool hit rate 1000 / 1000).

база 100% innodb, вот выдержка из конфига.
innodb_additional_mem_pool_size=22M
innodb_flush_log_at_trx_commit=2
innodb_log_buffer_size=11M
innodb_buffer_pool_size=2G
innodb_log_file_size=113M
innodb_thread_concurrency=18

Что мне непонятно:
новый сервер, как минимум должен гарантированно держать текущую нагрузку (а это не происходит)
ну и вообще нет ясности понимания отчего так происходит.

У кого есть подобный опыт, поделитесь мнением.
Куда копать? На что обратить внимание?

Mysql 5.0.77

Отредактированно sda (24.11.2011 12:17:43)

Неактивен

 

#2 28.11.2011 12:20:57

sda
Участник
Зарегистрирован: 24.11.2011
Сообщений: 4

Re: MySQL на двухпроцессорной конфигурации под Windows 2008

Вот, кажется причину нарыл. Висят потоки и чего-то ждут. Как понять чего они ждут?

OS WAIT ARRAY INFO: reservation count 444148, signal count 85917
--Thread 5216 has waited at .\btr\btr0sea.c line 1158 for 0.00 seconds the semaphore:
S-lock on RW-latch at 000000001A3530E8 created in file .\btr\btr0sea.c line 139
a writer (thread id 3664) has reserved it in mode  wait exclusive
number of readers 0, waiters flag 1
Last time read locked in file .\btr\btr0sea.c line 773
Last time write locked in file .\btr\btr0sea.c line 516
--Thread 3368 has waited at .\btr\btr0sea.c line 1158 for 0.00 seconds the semaphore:
S-lock on RW-latch at 000000001A3530E8 created in file .\btr\btr0sea.c line 139
a writer (thread id 3664) has reserved it in mode  wait exclusive
number of readers 0, waiters flag 1
Last time read locked in file .\btr\btr0sea.c line 773
Last time write locked in file .\btr\btr0sea.c line 516
...
...
--Thread 6584 has waited at .\btr\btr0sea.c line 1158 for 0.00 seconds the semaphore:
S-lock on RW-latch at 000000001A3530E8 created in file .\btr\btr0sea.c line 139
a writer (thread id 3664) has reserved it in mode  wait exclusive
number of readers 0, waiters flag 1
Last time read locked in file .\btr\btr0sea.c line 773
Last time write locked in file .\btr\btr0sea.c line 516

Неактивен

 

#3 29.11.2011 08:36:51

sda
Участник
Зарегистрирован: 24.11.2011
Сообщений: 4

Re: MySQL на двухпроцессорной конфигурации под Windows 2008

Проблему устранил. полет нормальный.

В processlist обнаружил висящие запросы в состоянии "Copying to tmp table". Путем недолгих разбирательств нашел кривой составной индекс, после перестройки которого все заработало.

Кто-нибудь может дать объяснение следующему факту
Почему старый сервер работал, а новый нет? (будучи при этом в 100500 раз лучше, sandra-вские тесты это показали)

Неактивен

 

#4 04.12.2011 23:44:45

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: MySQL на двухпроцессорной конфигурации под Windows 2008

Очень странная ситуация. Я правильно понимаю, что у обоих серверов одинаковые
конфигурации и одинаковые ОС, отличие только в оборудовании?

Also: не знаю, как дело обстоит в виндоус, а в Linux начальные процессоры 56ХХ
ведут себя хуже, чем процессоры 55ХХ (видимо, наличие поддержки в самом ядре
ОС) — поройте в этом направлении, возможно, есть какие-то драйверы, которые
могут дать хороший boost в этом месте.

Неактивен

 

#5 05.12.2011 12:04:39

sda
Участник
Зарегистрирован: 24.11.2011
Сообщений: 4

Re: MySQL на двухпроцессорной конфигурации под Windows 2008

Да, софт один-в-один (за исключением дров естественно).

Я для себя это объяснил особенностями реализации многопоточной обработки в mysql/windows. На старой системе тяжелые запросы обрабатывались последовательно и проблем не возникало (да, медленно, но работало же!). При многопоточной обработке стали возникать взаимные блокировки, отсюда и подвисания потоков и как следствие отказ всей системы.
Щас CPU стало порядка 10%, так что теперь есть куда рости smile

Отредактированно sda (05.12.2011 12:06:10)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson