Назад | Перейти на главную страницу

mysql не использует несколько процессоров

Наш сервер MySQL в последнее время использует много ЦП (он несколько раз достигал 100% и остается там какое-то время), и я заметил, что загрузка ЦП приходится на одно ядро ​​одного процессора. Я надеялся распространить это на всех 4 на моем сервере.

Я настраивал параметры MySQL, чтобы использовать больше оперативной памяти и меньше процессора, но иногда он все равно достигает очень высокой загрузки ЦП.

Похоже, что все в теме относится к thread_concurrency (который, как я читал, является настройкой только для solaris). Что я могу делать в Linux?

Спасибо.

Вы правы, thread_concurrency предназначен только для Solaris, и он устарел в MySQL 5.6 и новее. Я не думаю, что вы можете использовать многоядерные / CPU с MyISAM. Чтобы полностью использовать оборудование, используйте InnoDB.

это может помочь вам лучше понять вещи.

Правильное значение этой переменной зависит от среды и рабочей нагрузки. Вам нужно будет попробовать ряд различных значений, чтобы определить, какое значение подходит для ваших приложений. Рекомендуемое значение - удвоенное количество процессоров плюс количество дисков.

Диапазон этой переменной - от 0 до 1000. Значение 20 или выше интерпретируется как бесконечный параллелизм до MySQL 5.0.19. Начиная с 5.0.19, вы можете отключить проверку параллелизма потоков, установив значение 0. Отключение проверки параллелизма потоков позволяет InnoDB создавать столько потоков, сколько необходимо.

http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html#sysvar_innodb_thread_concurrency

Чтобы не усложнять - каждый запрос, выполняемый в MySQL, использует только 1 ядро ​​ЦП независимо от того, насколько многоядерным является движок InnoDB.

Все многоядерные оптимизации внутри MySQL помогают, когда у вас есть много разных запросов, выполняемых одновременно и уменьшающих нагрузку на ЦП и данные, но если у вас есть большой запрос, выполнение которого занимает минуты / часы, он всегда будет использовать только 1 ядро ​​ЦП. (И если у вас должны быть такие запросы, вам следует покупать серверы с более высокой скоростью процессора и меньшим количеством ядер.)