Conexiones en sleep mysql

539 views
Skip to first unread message

Tio Oscar

unread,
Sep 16, 2010, 2:27:27 PM9/16/10
to webandbeer
Buenas, tengo un problema de conexiones "colgadas" en MySQLm el tema es asi:

migramos unos sitios a otra granja de servidores, donde cuento con un proxy reverso con un timteout de 15 segundos, y en la configuracion del PHP en el webserver 20 segundos.

Los timeouts se respetan, los sitios a su vez usan mysqli para conectarse al servidor mysql, el tema es que por algún motivo las conexiones no mueren, sino que quedan como "sleep", tenia entendido que Mysqli no permitia conexiones recurrentes, y despues lei por ahí que desde no se que version de php si, en fin en php.ini encuentro esto:

mysqli.reconnect = Off

que de las 2 formas (on y off) me sigue manteniendo las conexiones sleep en mysql, cosa que realemente no tiene sentido ya que el script tiene un timeout de 20 segundos y sin congigurar mysql tenia conexiones colgadas de hasta 500 segundos, que obviamente no consumian micro ni i/o de disco pero si tenian su lugar en la cola, con lo que llegado al limite ningun sitio se podia conetar, por ahora tengo todo andando con una directiva en my.conf:

interactive_timeout = 10
wait_timeout = 10

donde la que vale es wait_timeout (cosa rara por que tendria que ser inactive_timeout, pero tampoco)

--
El Tio ~ Programador, hacker y filósofo
Blog: http://blog.exodica.com.ar
Linked'in: http://www.linkedin.com/in/ogentilezza
Tel: [+54 11] 638-LINUX (584689)
Movil: [+54 9 11] -------------

vi vi vi <- The number of the Beast!!!

:wq!

Andrés Gattinoni

unread,
Sep 16, 2010, 2:35:01 PM9/16/10
to weban...@googlegroups.com
No sé si es un tema del reconnect... las conexiones en sleep suelen
ser conexiones persistentes... según el manual de PHP es algo que se
introdujo en PHP 5.3.

Según la doc para crear la conexión persistente tenés que poner en el
host algo como "p:localhost" o "p:mysql.domain.com"... cómo estás
construyendo el objeto mysqli?

Anyways, fijate si esto te dice algo:
http://www.php.net/manual/es/mysqli.persistconns.php

2010/9/16 Tio Oscar <tio...@gmail.com>:

> --
> -------------------------------------------------------------------
> Para obtener más opciones, visita este grupo en
> http://groups.google.com/group/webandbeer?hl=es.
> El blog del grupo
> http://www.webandbeer.com.ar

Tio Oscar

unread,
Sep 19, 2010, 6:20:38 AM9/19/10
to weban...@googlegroups.com
Bueno, en fin el fucking server sigue tirandome conexiones persistentes, sin ningún limite aparente, con PHP 5.2, cualquiera!

Lo que si descubrí que también lo hace con mysql (funcion mysql_connect y no mysql_pconnect).

Lo que descubri es que la function register_shutdown_function no reemplaza a la función anterior como los *handle, sino que la agrega a una lista de funciones a ejecutar, que se respeta al no ser que alguna dispare un exit(), asi que lo mejor es hacer algo asi:


class db {

   function __construct () {
        register_shutdown_function($this, '__destruct');
   }

   function __destruct () {
         if ($this->status == self::STAT_CONNECT) {
               $this->close();
         }
   }

}
 
Haciendo eso apasigue la cosa, baje de tener una cola de 10 conexiones (con timeouts) a solo 1,2 si se muestran :-)

2010/9/16 Andrés Gattinoni <andresg...@gmail.com>
Reply all
Reply to author
Forward
0 new messages