2011-12-31 15 views
14

Estoy tratando de establecer la configuración de rendimiento ideal para MySQL y los recursos necesarios en un alojamiento compartido.¿Qué significa max_connections realmente?

Mi pregunta es, ¿qué significa realmente max_connections?

¿Es el número de solicitudes concurrentes únicas realizadas en el servidor? Entonces, si hay dos usuarios, 1 con 1 pestaña abierta y la otra con 4 pestañas abiertas ... y ambas presionan todas sus pestañas para volver a cargar al mismo tiempo, ¿se realizarán 5 conexiones a la base de datos MySQL? En consecuencia, si encontramos este escenario para: 10 personas con 2 pestañas y 31 personas con una sola pestaña presionando actualizar al mismo tiempo ... con nuestro max_connections a 50, ¿todos quedarán bloqueados?

La razón que pido es porque quiero apuntar a baja max_connections a ser conservador con recursos de memoria ya que constantemente veo el sitio de entrar en el modo de limitación de la CPU

Gracias por su ayuda

Respuesta

13

Sí, hay es una conexión separada abierta para cada página. Sin embargo, suponiendo que no está haciendo nada de uso intensivo de la base de datos, la conexión será efímera y se cerrará una vez que la página se haya enviado al cliente.

Si supera la cantidad máxima de conexiones, cualquier intento de conexión posterior fallará.

+2

¿Existe una limitación para establecer el valor de 'max_connections'? ¿Qué sucede si lo configuro en 200,000 por ejemplo o incluso más? – antf

+1

Cada conexión usa memoria tanto dentro del sistema operativo como en el proceso del servidor. Eventualmente alcanzará un límite de la cantidad máxima de conexiones que su caja puede manejar. Esto es bastante antiguo, pero el [problema C10K] (http://www.kegel.com/c10k.html) da una idea de algunos de los problemas que enfrenta una gran cantidad de conexiones a un único servidor. –

15

El número de conexiones permitidas está controlado por la variable del sistema max_connections. El valor predeterminado es 151 para mejorar el rendimiento cuando se usa MySQL con el servidor web Apache. (Anteriormente, el valor predeterminado era 100). Si necesita admitir más conexiones, debe establecer un valor mayor para esta variable.

mysqld en realidad permite max_connections + 1 clientes para conectarse. La conexión adicional está reservada para el uso de cuentas que tienen el privilegio SUPER. Al otorgar el privilegio SUPER a los administradores y no a los usuarios normales (que no deberían necesitarlo), un administrador puede conectarse al servidor y usar SHOW PROCESSLIST para diagnosticar problemas, incluso si está conectada la cantidad máxima de clientes no privilegiados. Consulte la Sección 12.7.5.30, "SHOW PROCESSLIST Sintaxis". El número máximo de conexiones que MySQL puede admitir depende de la calidad de la biblioteca de subprocesos en una plataforma determinada, la cantidad de RAM disponible, la cantidad de RAM que se utiliza para cada conexión, la carga de trabajo de cada conexión y la respuesta deseada. hora. Linux o Solaris deberían ser capaces de admitir de 500 a 1000 conexiones simultáneas de forma rutinaria y hasta 10.000 conexiones si tiene muchos gigabytes de RAM disponibles y la carga de trabajo de cada uno es baja o el objetivo del tiempo de respuesta poco exigente. Windows está limitado a (tablas abiertas × 2 + conexiones abiertas) < 2048 debido a la capa de compatibilidad Posix utilizada en esa plataforma.

Puede que sea necesario aumentar el límite de archivos abiertos. Consulte también la Sección 2.5, "Instalación de MySQL en Linux", para saber cómo aumentar el límite del sistema operativo sobre cuántos controles MySQL puede usar.

Desde: MySQL 5.6 Reference Manual:: C.5.2.7 Too many connections

Cuestiones relacionadas