2008-11-06 31 views
12

Estoy desarrollando una aplicación web utilizando el servlet de Java para acceder a Mysql db, ¿cómo puedo obtener el número de conexiones a mi base de datos que actualmente está abierto?¿Cómo contar conexiones db abiertas?

Editar:

Probé "mostrar processlist", que me mostró: 2695159, pero eso no está bien, sólo estoy desarrollo de este nuevo proyecto, que soy el único usuario, no podría tener que muchos procesos en ejecución, lo que quiero es la cantidad de usuarios que acceden a DB de mi proyecto, no la cantidad de todos los usuarios de db, sino solo los que inicien sesión en mi base de datos que solo tiene una tabla.

Respuesta

2

espectáculo processlist

9

podría utilizar el comando de MySQL show processlist para obtener el número de conexiones.

Sin embargo, eso también le mostrará cualquier conexión hecha con el mismo ID de usuario a la base de datos que puede no provenir de su servlet.

En general, le sugiero que probablemente sea mejor utilizar un objeto Pool de conexión (consulte http://java-source.net/open-source/connection-pools) para administrar sus conexiones con el servidor MySQL. Esto puede aumentar el rendimiento haciendo que las conexiones de base de datos sean persistentes, por lo que no siempre tendrá la sobrecarga de una nueva conexión de base de datos para cada carga de página.

Si su servlet necesita saber el número de conexiones, entonces su Connection Pool debería venir con un método que le indica cuántas conexiones están activas actualmente.

3

estado de espectáculo como o muestran el estado global 'Threads_connected' como 'Threads_connected'

No está seguro acerca de la diferencia entre los dos en un usuario en el contexto, y es posible que aún tienen el problema de que se podría ver todas las conexiones, no solo las de tu aplicación.

incluso puede comprobar Threads_running para ver solo los hilos en ejecución (por ejemplo, no durmiendo).

13

Dependiendo de la versión de MySQL, puede realizar una selección en

SELECT COUNT(*) FROM information_schema.PROCESSLIST;

y se puede hacer un where entre el usuario, base de datos, y la dirección IP del host.

Por ejemplo:

USE information_schema; 
SELECT COUNT(*) FROM PROCESSLIST WHERE db ="mycase" AND HOST LIKE "192.168.11.174%" 
2

Sólo se puede seleccionar entre Information_Schema.Processlist los datos que le pertenece. Significa que puede usarlo para monitorear SOLAMENTE si ha iniciado sesión como root, de lo contrario, verá las conexiones provenientes de su usuario con el que inició sesión.

Si quieres adecuada supervisión de SQL, será:

SELECT variable_value 
FROM INFORMATION_SCHEMA.GLOBAL_STATUS 
WHERE variable_name='threads_connected' 
3

ejecute la consulta siguiente, se enumera el nombre de host y no. de conexiones de cada host:

SELECT host, count (host) FROM information_schema.lista de procesos GROUP BY host;

0

Usted puede usar este

DEMOSTRACIÓN DE LA SITUACIÓN MUNDIAL; o muestran el estado global como "Threads_connected";

de Estado de las conexiones puede encontrar el número total de conexiones.

0

También puede contar con conexión abierta por mostrar el estado de Threads_connected nombre de la variable así:

SHOW STATUS WHERE variable_name = 'Threads_connected'; 

O también se puede contar con la lista de procesos directamente desde information_schema.PROCESSLIST, como a continuación:

SELECT COUNT(*) FROM information_schema.PROCESSLIST; 
Cuestiones relacionadas