Kohana 3 y Error "Too many connections"

41 views
Skip to first unread message

Andrés Morales

unread,
Sep 19, 2011, 9:22:25 AM9/19/11
to php...@googlegroups.com
Hola gente, a ver si alguno ya ha tenido un problema de este tipo y me puede dar una mano.
Tengo una aplicación en producción que maneja tanto un sistema interno como una página web, ambos están relacionados. No solamente como CMS+Web sino como sistema de control de usuarios, manejo de solicitudes, CMS y web. Ambos sistemas tienen muchos usuarios (algunos administradores, otros editores y muchos usuarios finales). El sistema web utiliza MySQL como motor de DB.
Bueno, después de ponerlos en contexto, les cuento del problema que me aqueja:
Me surgió un error de SQL: 

  Database_Exception [ 0 ]: [1040] Too many connections ~ MODPATH/database/classes/kohana/database/mysql.php [ 67 ]

Viendo del lado del servidor, realmente habían demasiadas conexiones al motor que podían llegar a hacer que éste hubiera retornado ese mensaje.
Obviamente, hubo un colapso de la página hasta que reinicié Apache (esto tiró todas las conexiones que estaban funcionando y logró apagar el incendio).
Pero, evidentemente, esto podría llegar a suceder.
Estuve googleando y leyendo el manual de MySQL y existe una configuración para aumentar el número de conexiones (de 151 que es el valor por defecto a las que hagan falta).
Pero también estuve viendo la configuración de Kohana y ví que existe un caché de queries (dentro de la configuración para la base de datos). Ahora, lo que no sé es si este caché "guarda" en memoria el resultado de cada consulta o si es un caché de queries, o sea, que guarda la query para que Query_Builder u ORM sean pasados por alto ya que la consulta ha sido previamente generada (y se encuentra en caché).
Necesito conseguir una solución al problema pero evitando (tanto como sea posible) la modificación de la configuración de MySQL, ya que esto lo maneja otro departamento dentro de la empresa y preferiría trabajarlo desde nuestro lado y no del lado de ellos.
Muchas gracias.

  Andrés

Agustin Quiroga

unread,
Sep 19, 2011, 9:42:32 AM9/19/11
to php...@googlegroups.com
Estimado,
Subir la cantidad de conexiones concurrentes en el MySQL es una rápida solución, pero si no tenes los fierros para respaldar esa medida puede ser peligroso por que puede tirar el servicio completo.
Yo avanzaría por estos caminos:
  1. Analizar como reducir el tiempo de conexión a la db de acción/pageview de la aplicación, para liberar los recursos ni bien no se necesitan más.
  2. Analizar como disminuir la cantidad de acción/pageview que requiren de conexion a la base de datos.
  3. Por último aumentar la cantidad de conexiones concurrentes permitidas en el MySQL
El primer paso es más o menos una optimización de las acciones.
El segundo implementar algún tipo de cache (memcache, o cache de las acciones en disco) para no utilizar la db en los casos donde no es estrictamente necesario (información que tiende a ser poco modificada en el tiempo).
El tercero ya es un lujo para mejorar la capacidad de la app.

Claro que para no tener que dejar de dar servicio podes empezar por el punto 3, pero ojo que el hardware acompañe a esa modificación.

Del query cache de kohana, no se. Si es como el query cache de la mayoría de los ORM es simplemente el cacheo de las consultas, es decir el SQL que genera el ORM para disminuir el tiempo de parseo de los mismos en PHP, luego las llamadas a la DB se siguen haciendo.

Abrazo,

Agustín Quiroga
Web.Q
Web. www.webq.com.ar
Twitter. @AgusQuiroga
Tel: +54.11.5368.7921 - Skype: WebQ_Online - Dir: Juncal 2622, 5to. C
Ciudad Autónoma de Buenos Aires, Argentina.
"Asesoramiento, desarrollo y soporte para proyectos y negocios en internet."



2011/9/19 Andrés Morales <andresfern...@gmail.com>

xava *

unread,
Sep 19, 2011, 9:48:01 AM9/19/11
to php...@googlegroups.com
Mira, empece hace poco con kohana y mucho no conosco
pero si, eso mismo, implementar memcache urgente :) que no se si kohana no viene ya con memcached o es muy compatible aplicarlo, fijate que hay bastante info al respecto

suerte ahi!


2011/9/19 Andrés Morales <andresfern...@gmail.com>
--
Has recibido este mensaje porque estás suscrito al grupo "Grupo PHP Argentina" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a php...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a php-arg+u...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/php-arg?hl=es.

xava *

unread,
Sep 19, 2011, 9:49:11 AM9/19/11
to php...@googlegroups.com

Agustin Quiroga

unread,
Sep 19, 2011, 9:57:10 AM9/19/11
to php...@googlegroups.com
Un tema importante, Memcache es un componente que cachea en memoria la info que le pasas. Si no tenes mucho ram para usar o se implementa mal puede ser igual de peligroso.
Abrazo,


Agustín Quiroga
Web.Q
Web. www.webq.com.ar
Twitter. @AgusQuiroga
Tel: +54.11.5368.7921 - Skype: WebQ_Online - Dir: Juncal 2622, 5to. C
Ciudad Autónoma de Buenos Aires, Argentina.
"Asesoramiento, desarrollo y soporte para proyectos y negocios en internet."



2011/9/19 xava * <xa...@00101010.com.ar>
Reply all
Reply to author
Forward
0 new messages