2009-02-20 10 views
5

Tengo una aplicación en Grails. Uso Hibernate para acceder a la base de datos (según las reglas estándar de grails) Uso MySql y el sitio funciona y es estable (durante 6 meses).Grails/Hibernate La base de datos se bloquea bajo carga: no se puede conectar (incluso cuando se agrupa)

Estoy haciendo pruebas de carga, y recientemente descubrí que la base de datos rechaza las conexiones cuando está bajo carga.

Uso de MySQL Server 5, puedo ver hilos vez conectado situándose en torno a 20. El pensamiento i saltos entre 11 - 30.

mysql> show status like '%con%'; 
+--------------------------+-------+ 
| Variable_name   | Value | 
+--------------------------+-------+ 
| Aborted_connects   | 72 | 
| Connections    | 65539 | 
| Max_used_connections  | 101 | 
| Ssl_client_connects  | 0  | 
| Ssl_connect_renegotiates | 0  | 
| Ssl_finished_connects | 0  | 
| Threads_connected  | 1  | 
+--------------------------+-------+ 
7 rows in set (0.00 sec) 

Mi configuración de base de datos es estándar. (El servidor MySql está instalado localmente, no se muestra)

dataSource { 
    pooled = false 
    driverClassName = "com.mysql.jdbc.Driver" 
    username = "username" 
    password = "secret" 

    maxIdle = 15 
    maxActive = 100   
} 

¿Debo investigar C3P0? ¿O debería aumentar mi maxActive a 1000 y esperar lo mejor?

Respuesta

4

¿Qué error está reportando Grails cuando no puede obtener una conexión a la base de datos? ¿Se acabó el tiempo? ¿Rehusó?

Cuando ejecuta su prueba, ¿qué tan cargada está la caja? Porcentaje de CPU, uso de memoria, etc.

Es posible que la base de datos esté tan sobrecargada que Grails agote el tiempo para obtener conexiones. Si desea manejar la carga, querrá ir a las conexiones de BD agrupadas. Sin agrupar, Grails abrirá y cerrará una conexión de base de datos con cada solicitud.

+0

Parece que los límites de conexión de Pooling y MySql fueron la respuesta. – user57660

0

Compruebe su configuración de mysql (/etc/mysql.conf o su equivalente local), particularmente las conexiones máximas y la configuración máxima por configuración de usuario; esto suena como si viniera de mysql y no de grial.

Cuestiones relacionadas