Conexiones persistentes MySQL Para que ? Que Son ?

dbembibre Seguir

Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
30 Sep 2004
Mensajes
453
Como todos sabeis existe en el fichero de configuración el siguiente parámetro:
Insertar CODE, HTML o PHP:
/* Setting this variable to 1 will cause PHP to use persistent connections to the MySQL server. For very large vBulletin installations, using persistent connections may result in a slight performance boost but in most cases leaving it set to 0 (off) is the best option. If you are unsure, leave it set to 0 */
 
[B][COLOR=red]$config['MasterServer']['usepconnect'] = 0[/COLOR][/B]

  • ¿ Pero que es ?
  • ¿ en que nos beneficia ?
  • ¿ donde es indicado de usar ?
Voy a intentar responder a estar preguntas de la forma más sencilla posible.

¿Que son ?

Las conexiones persistentes son enlaces que no se cierran cuando termina la ejecución del archivo de comandos. Cuando se pide una conexión persistente, PHP comprueba si hay ya una conexión persistente idéntica (que permanecía abierta desde antes) - y si existe, la usa. Si no existe, crea un enlace. Una conexión 'idéntica' es una conexión que se abrió hacia el mismo "host", con el mismo nombre de usuario y la misma contraseña (donde sea aplicable).

¿ en que nos beneficia ?

La respuesta aqui es extremadamente simple -- eficiencia. Las conexiones persistentes son buenas si las cabeceras de control para crear un enlace a tu servidor SQL es alta. Que estas cabeceras sean o no realmente altas depende de muchos factores. Como, qué clase de base de datos es, si esta o no situada en el mismo ordenador que el servidor web, cómo está de cargada la máquina donde se encuentre el servidor SQL, y otras así. El hecho fundamental es que si la cabecera de conexión es alta, las conexiones persistentes te ayudan considerablemente . Ellas hacen que el proceso hijo simplemente conecte solamente una vez durante todo su intervalo de vida, en vez de cada vez que procesa una pagina que requiere conectar al servidor SQL. Esto significa que por cada hijo que abrió una conexión persistente tendrá su propia conexión persistente al servidor. Por ejemplo, si tienes 20 procesos hijos distintos que corran un archivo de comandos que cree una conexión persistente a tu servidor SQL, tendrías 20 conexiones diferentes a ti servidor SQL, una por cada hijo.
No obstante, hay que tener en cuenta que esto puede tener desventajas si estais utilizando una base de datos con límites de conexión, por debajo del numero de procesos hijo con conexiones persistentes. Si tu base de datos tiene un límite de 16 conexiones simultaneas y en el curso de una sesión de servidor, 17 procesos hijo intentan conectarse, uno de ellos no podrá hacerlo. Si existen errores en los scripts, que no permitan terminar la conexion (p.ej.bucles infinitos), una base de datos con solo 16 conexiones puede ser rápidamente hundida. Comprobar la documentacion de vuestra base de datos para obtener información sobre que hacer con conexiones abandonadas ó libres.

¿ donde es indicado de usar ?

Pues realmente deberían ser usadas donde se conozcan de antemano el rango de clientes posibles, como habeis leído con anterioridad una base de datos con 16 conexiones en una súper máquina puedes ser hundida en cuestión de horas, por lo que es importante conocer el rango de posibles conexiones máximas y simultaneas que tendrás para poder habilitar la persistencia de las conexiones.

El balanceo (no balanceo de carga) de un arte, donde el que lo hace debe siempre saber dimensionar, sobre todo en el entorno AMP (Apache, MySQL, PHP) ya que estos tres programas se encuentran relacionados.

*Muchas de las definiciones las he copiado de php.net ya que no tenía ganas de escribirlas, pero espero que se hayan entendido :)
http://www.php.net/manual/en/features.persistent-connections.php
 
D

DuckMan

gracias por la informacion :) muy util, yo tengo un foro q esta hosteado en determinada empresa, esta empresa tiene una pc para los archivos webs, otra para la base de datos, y otra para los correos, estan todas en red, osea no creo q haya problemas de conexion entre ellas. Mi actividad constante debe ser 15 usuarios aproximadamente, me convendria activarlo?
 

dbembibre

Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
30 Sep 2004
Mensajes
453
En ese caso si porque va a ir mucho más rápido, pero ojo que no se conecten más porque el servidor morirá :D
 
Arriba