2010-03-16 27 views
15

En el servidor de producción LAMP obtengo el error 'demasiadas conexiones' de MYSQL ocasionalmente, quiero agregar monitoreo para encontrar si el motivo es que excedo las conexiones máximas límite.Supervisión de conexiones usadas en mysql para depurar 'demasiadas conexiones'

Mi pregunta: ¿Cómo puedo consultar desde mysql o desde mysqladmin el número actual de conexiones utilizadas? (me di cuenta de que el estado da espectáculo conexiones totales y no los que actualmente se utilizan unos.)

Respuesta

15

Una herramienta muy poderosa para monitorear MySQL es innotop. Lo puedes encontrar aquí:

https://github.com/innotop/innotop

En Debian Lenny, que es parte del paquete mysql-client-5.0 y supongo que está disponible para otras distribuciones también. Es especialmente potente en la supervisión interna de InnoDB, pero también proporciona una supervisión general del servidor.

En el modo "Variables & Estado", monitoriza las variables "Conexiones" y "Conexiones máx. Utilizadas" (entre otras). Muestra valores absolutos e incrementales, lo último podría darle una idea sobre las conexiones actuales.

Dado que innotop proporciona un modo no interactivo, puede crear fácilmente un monitoreo totalmente automático llamando a innotop desde algunos scripts personalizados, verificaciones nagios o cualquier sistema que tenga.

+2

En Debian, es posible que deba instalar manualmente 'libterm-readkey-perl 'para hacer que funcione. –

3

http://www.mail-archive.com/[email protected]/msg00830.html

Echa un vistazo aquí Mate - puede ser de alguna utilidad.

+0

Muchas gracias por la respuesta.Sin embargo, el hilo describe cómo encontrar que la situación de conexiones máximas ha sucedido para poder recuperarla. Estoy buscando monitorear continuamente las conexiones usadas a lo largo del tiempo, así sabré si fue la causa o algo así como la falta de memoria o los recursos de acceso al disco. – Nir

1

Puede que le resulte más fácil obtener MySQL Admin, de esta manera, puede controlar fácilmente de dónde provienen las conexiones utilizadas. Vea aquí en esto sobre el connections usado ...

+0

El documento en el enlace "conexiones" ha sido eliminado. –

+1

@ChrisBuckett No me sorprende que Oracle esté matando a MySql ... Hay [MariaDb] (http://mariadb.org/) como la versión bifurcada ... – t0mm13b

2

SHOW STATUS no muestra las conexiones totales: muestra las conexiones actuales. Obtiene el mensaje de error demasiadas conexiones cuando el número de conexiones abiertas (inactivas o no) supera el límite establecido para el servidor.

De su comentario sobre SHOW STATUS, parece que tiene muchas conexiones inactivas en su servidor. Eso apunta al mal uso de conexiones persistentes; algunas bibliotecas que afirman que son compatibles con las conexiones persistentes no las manejan adecuadamente y tienden a abrir nuevas conexiones incluso cuando hay conexiones inactivas disponibles.

Averigüe qué aplicación está ejecutando dichas consultas y configúrelo para que no use conexiones persistentes.

2

Para obtener el número total de conexiones simultáneas permitidas por MySQL debe comprobar

show variables like 'max_connections'

y el número de conexiones simultáneas que se están utilizando actualmente puede medirse por

show status like 'max_used_connections'

Usted debe monitorear estas variables. Si necesita una herramienta comercial que monitoree importantes métricas de MySQL, puede probar MySQL Enterprise Monitor, MONyog, etc.

Cuestiones relacionadas