LINUX.ORG.RU
ФорумAdmin

Паразитная нагрузка от mysql


0

2

Добрый день.

Недавно возрастала нагрузка на бд mysql, порядка 70 коннектов/тредов, в основном выборка данных, база небольшая - 60мб. Сервер два проца X5650 (24 ядра) + 16гб памяти. Проблема в том что при нагрузке на базу system time по каждому ядру >50%. iowait = 0, user time 10-20%

strace показал что 99,9% всех сисколов из сервера mysql приходится на select.

Собственно вопрос - с чем может быть связана столь высокая частота вызовов select, куда копать, что оптимизировать.

ps. в конфиге буфер/стеки/кеши увеличил до нескольких раз - не помогло. centos 5.5, mysql 5.0.77

Ответ на: комментарий от loginrl103

>для данного вида запроса какие индексы мне надо готовить?

p.products_id

Как я понял, это первичный индекс, уже есть.

pc.products_id

Если этого нет — сделай.

pd.products_id

Тоже первичный? Тогда уже есть.

pd.language_id
p.products_status
p.products_ordered

Эти три добавь, если нету. Но я бы не надеялся на большой выигрыш, тут и структура запроса не шибко оптимальна, и, думаю, структура самой БД. Но, как я понял, логика написана сторонним разработчиком и так просто её не поменять?

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

да, посути движок/структура полное УГ. частично дописывается менятеся штатными разрабами.

loginrl103
() автор топика
Ответ на: комментарий от KRoN73

strace смотрю запросы syscall select: select(9, [6 8], NULL, NULL, NULL <unfinished ...>

фд 6 и 8 - сокеты, согласно докам - селект ждёт их на готовность чтения.

loginrl103
() автор топика
Ответ на: комментарий от loginrl103

мало поставить перкону. надо еще и таблицы перевести в xtradb. ну это если полностью совету следовать...

anonymous
()
Ответ на: комментарий от anonymous

вообщем strace с потоками показал несколько иную картину
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
93.69 115.094496 1983 58054 13013 futex <<<<<<WTF
2.00 2.451625 612906 4 rt_sigtimedwait
1.95 2.393487 13151 182 select
1.23 1.507188 9 163274 2543 read
0.30 0.362681 3 112431 pread64
0.29 0.357182 3 115037 _llseek
0.20 0.241577 5 46577 1 write
0.12 0.153132 3 46696 gettimeofday
0.10 0.128813 3 43198 43198 sched_setscheduler
0.06 0.077607 3 24874 time
0.02 0.020883 3 5998 fcntl64
0.01 0.014100 30 474 munmap
0.01 0.008468 5 1660 pwrite64
0.00 0.005171 6 804 60 lstat64
0.00 0.003713 7 546 setsockopt
0.00 0.003691 8 478 close
0.00 0.003581 30 118 unlink
0.00 0.003335 10 351 open
0.00 0.002468 4 572 mmap2
0.00 0.001287 5 244 madvise
0.00 0.001161 5 253 3 access
0.00 0.001008 6 178 178 readlink
0.00 0.000878 5 182 getsockname
0.00 0.000655 5 132 shutdown
0.00 0.000544 3 182 getpeername
0.00 0.000540 3 182 accept
0.00 0.000410 4 111 getcwd
0.00 0.000219 27 8 rt_sigprocmask
0.00 0.000000 0 3 alarm
0.00 0.000000 0 1 mprotect
0.00 0.000000 0 3 tgkill
------ ----------- ----------- --------- --------- ----------------
100.00 122.839900 622807 58996 total

собственно проблема оказалась в futex. из 122 секунд трассировки 115 секунд отжирает futex. что не очень адекватно. есть идеи из-за чего это?

loginrl103
() автор топика
Ответ на: комментарий от loginrl103

итаг, поиск проблемы принёс кое-какие результаты - это вроде как ошибка, решение - обновиться.

при первой попытке установить перкону я её не совсем верно воткнул (версию потом было лень проверять), сейчас воткнул по новой, нормально, работать стало НОРМАЛЬНО.

loginrl103
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.