Pregunta mysql no esta usando multiples cpus


Nuestro servidor MySQL ha estado usando una gran cantidad de CPU últimamente (se ha alcanzado el 100% varias veces y permanece allí durante un tiempo) y noté que la carga de la CPU está en un núcleo de una CPU. Tenía la esperanza de extender eso a los 4 en mi servidor.

He estado ajustando la configuración de MySQL para usar más RAM y menos CPU, pero ocasionalmente alcanza un uso de CPU muy alto.

Parece que todo sobre el tema se refiere a thread_concurrency (que he leído es solo una configuración de Solaris). ¿Qué puedo hacer en Linux?

Gracias.


6
2017-12-26 09:30


origen




Respuestas:


Tiene razón, thread_concurrency es solo para Solaris y está obsoleto en MySQL 5.6 en adelante. No creo que puedas usar multi cores / cpus con MyISAM. Para utilizar completamente el hardware, use InnoDB.

Esta Podría ayudarte a entender mejor las cosas.


2
2017-12-14 13:23





El valor correcto para esta variable es   Depende del entorno y la carga de trabajo.   Tendrá que probar un rango de   diferentes valores para determinar qué   El valor funciona para sus aplicaciones. UNA   El valor recomendado es 2 veces el   número de CPUs más el número de   los discos

El rango de esta variable es 0 a   1000. Un valor de 20 o superior se interpreta como concurrencia infinita   antes de MySQL 5.0.19. A partir de 5.0.19,   puede deshabilitar la concurrencia de hilos   comprobando estableciendo el valor a 0   Deshabilitando la verificación de concurrencia de hilos   permite a InnoDB crear tantos   Hilos según sus necesidades.

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


1
2017-12-26 09:52



Esa configuración ya está establecida en 8. Sin embargo, mis tablas son myisam y parece que solo está usando una CPU. - mhost
Dado que está utilizando el tipo de tabla Myisam, la concurrencia de InnoDB no tiene ningún efecto en su servidor mysql. No tengo conocimiento de ninguna configuración o configuración que haga escala de myisam para sistemas multinúcleo. - Istvan


Para mantenerlo simple, cada consulta ejecutada en MySQL usa solo 1 núcleo de CPU, independientemente de cuán multi-core sea el motor InnoDB.

Todas las optimizaciones de múltiples núcleos dentro de MySQL te ayudan cuando tienes muchas consultas diferentes ejecutándose al mismo tiempo y en degradación para la CPU y los datos, pero si tienes alguna consulta grande que demora unos minutos / horas, siempre usará solo 1 núcleo de CPU. (Y si debe tener tales consultas, debe comprar servidores con mayor velocidad de CPU y menos número de núcleos).


0
2017-11-12 23:03