Foros del Web » Programando para Internet » PHP »

PHP OO colapso mysql por conexiones abiertas

Estas en el tema de colapso mysql por conexiones abiertas en el foro de PHP en Foros del Web. Buenas tardes. Haber quien me puede ayudar comentar algo sobre mi problema. Tengo un sistema de pedidos vía web que funciona perfectamente, básicamente con un ...
  #1 (permalink)  
Antiguo 26/04/2014, 11:12
 
Fecha de Ingreso: noviembre-2010
Ubicación: Vila-real-Castellon-España
Mensajes: 18
Antigüedad: 14 años
Puntos: 0
Pregunta colapso mysql por conexiones abiertas

Buenas tardes.
Haber quien me puede ayudar comentar algo sobre mi problema.
Tengo un sistema de pedidos vía web que funciona perfectamente, básicamente con un base de datos y una tabla casi siempre para pedir piezas, estoy en un hosting de pago 1 and y tiene 18 conexiones a mysql hasta ahí todo bien.
El script se conecta a través de un formulario pide piezas, lo graba en la tabla y la cierra la conexión con mysql close, puede haber varios a la vez pidiendo piezas o consultando, pero ahora el trafico aumentado y sin más me dice que hemos superado el número de conexiones, y se bloquea no permite acceder a la base de datos, el hosting me bloquea una hora y ya funciona, he llamado y me han comentado que es que algún script no se cierra los he revisado y sí que lo cierra, he estado leído algo sobre conexiones latentes, el hosting me comenta que me pase a un servidor dedicado que tiene 150 conexiones pero se me va de presupuesto de momento.
Alguien sabe de un script de cierre total de la conexión o me puede orientar sobre esto.

Gracias de antemano.
  #2 (permalink)  
Antiguo 26/04/2014, 12:57
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: colapso mysql por conexiones abiertas

La verdad, me parecen muy pocas conexiones, sin embargo, sería muy difícil que superes las 18, a menos que el tráfico del sitio sea considerable o que en tus scripts estés usando más de una conexión.

Se requeriría de 19 (o más) peticiones simultáneas para colapsar el sitio, lo cual es posible de acuerdo al tráfico y a motores de búsqueda indexando páginas.

Tienes algún sistema de estadísticas con el que puedas medir el tráfico y saber si esa es la causa?

Por otra parte, algunos desarrolladores suelen establecer dos o más conexiones a base de datos, cuando una es más que suficiente en la mayoría de los casos. Mencionas que conectas, lees, grabas y cierras conexión, pero cuántas veces lo haces en una misma petición?

No tengo experiencia con conexiones persistentes, así que no puedo opinar de eso; en cuanto al servidor, seguramente un VPS (mucho más económico que el dedicado) puede ser suficiente para tus necesidades.

En todo caso, lo mejor es analizar todas las posibilidades para encontrar la solución más adecuada.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 26/04/2014, 13:20
 
Fecha de Ingreso: noviembre-2010
Ubicación: Vila-real-Castellon-España
Mensajes: 18
Antigüedad: 14 años
Puntos: 0
Respuesta: colapso mysql por conexiones abiertas

Gracias por contestar.

"Mencionas que conectas, lees, grabas y cierras conexión, pero cuántas veces lo haces en una misma petición?"

Es constante, los recambistas piden una piezas, se conectan, graban el pedido y cierran constantemente, y vuelven a realizar un pedido, tal vez lo mejor seria no cerrar la conexión tenerla abierta y solo contario como una, pregunto.
  #4 (permalink)  
Antiguo 26/04/2014, 13:40
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: colapso mysql por conexiones abiertas

A ver, te explico cómo debería funcionar esto:

1- Al iniciar la petición conectas a base de datos
2- Realizas las consultas necesarias para identificar al usuario y mantener la sesión
3- Realizas las consultas necesarias para mostrar productos y/o guardar pedido
4- Fin del script, se libera la única conexión a base de datos para esta petición
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 26/04/2014, 14:07
 
Fecha de Ingreso: noviembre-2010
Ubicación: Vila-real-Castellon-España
Mensajes: 18
Antigüedad: 14 años
Puntos: 0
Respuesta: colapso mysql por conexiones abiertas

Si hace eso.

Pero pueden haber varios usuarios haciendo eso, y cada uno tiene un ordenador, por lo tanto pueden haber 5 utilizando ese proceso y 3 realizando otro sobre la misma base de datos, pero es dificil que coincidan 18 a la vez, haciendo algo, por eso si abro y cierro la conexión no entiendo como se bloque, salvo que el servidor piense que es un ataque y se bloquee, al principio esto no pasaba, pero tal como he ido metiendo usuarios me pasa esto, estoy un poco desesperado y no se por donde tirar, que hay dias que va todo vien, y cuando mas nos urge no deja tirados.

Saludos de antemano.
  #6 (permalink)  
Antiguo 26/04/2014, 18:12
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: colapso mysql por conexiones abiertas

Cita:
Iniciado por Triby Ver Mensaje
Se requeriría de 19 (o más) peticiones simultáneas para colapsar el sitio, lo cual es posible de acuerdo al tráfico y a motores de búsqueda indexando páginas.
Con solo 5 abiertas a mi me colapsaba un hosting de mala muerte

@josepaspi : Si tu hosting molesta tanto... podrias usar SQLite ya que seguro son puras consultas y sin concurrencia en escritura no tendras ningun problema.


Los consejos de @Triby debes seguirlos... sino te alcanza prueba con SQLite (y pasas a tener 0 conexiones y fin del problema)

Podria bajar un poco el rendimiento pero es mejor que tener problemas
__________________
Salu2!
  #7 (permalink)  
Antiguo 27/04/2014, 09:12
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 7 meses
Puntos: 270
Respuesta: colapso mysql por conexiones abiertas

Seguro que no estás usando una "libreria","clase" o *algo* que gestiona la base de datos, que cada vez que se hace 1 query, primero conecta, con lo que hace 1 conexion por query? No sería la primera ni la segunda vez que he visto esto...

Si tienes 18 conexiones, que significa 18 páginas servidas a la vez, y, teniendo en cuenta que, entre el tráfico de red, y que la gente pasa tiempo mirando la página, rellenando formularios, etc, si estás sirviendo 18 páginas a la vez es que tienes al menos 180 usuarios continuamente en tu web, en caso de que puedas servir 18 páginas por segundo (a una media de 10 segundos por usuario/página).Si es así, tienes una web que no sé qué hace en one & one.
Si no eres capaz de servir 18 páginas por segundo, es posible que pase lo contrario.Hay un proceso que hace que la página se cargue muuy lenta.Eso hace que la gente recargue la página, que se acumulen peticiones, por lo que llegarías de nuevo a las 18 conexiones simultáneas, pero en ese caso, con muchos menos usuarios que están esperando a que se cargue una página muy lenta.

Busca cualquier código de conexión a la base de datos, y mete una linea de debug.Carga una página.Cuántas líneas de debug aparecen? Sólo una?.Cuánto tiempo tarda en resolverse la petición más pesada que tengas? Has hecho un SHOW PROCESSLIST cuando la web está colgada?

Última edición por dashtrash; 27/04/2014 a las 09:17
  #8 (permalink)  
Antiguo 27/04/2014, 16:50
 
Fecha de Ingreso: noviembre-2010
Ubicación: Vila-real-Castellon-España
Mensajes: 18
Antigüedad: 14 años
Puntos: 0
Respuesta: colapso mysql por conexiones abiertas

Tienes razón estoy haciendo eso que tu dices, y recargando la pagina continuamente, mi nivel de php es muy basico, no me dedico a eso profesionalmente, pero voy haciendo cositas en el trabajo para dar mas servicio a clientes, me puedes dar mas pistas para investigar y seguir aprendiendo, ya que libreria y clase lo he oido pero me suena un poco a chino.

Gracias, por que has dado en el clavo, ahora voy a ver como lo soluciono, me puedes ayudar un poco.

Saludos.

Josepaspi

Etiquetas: myslq
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:43.