Hola gente, se que no utilizamos Informix 9.21 pero igual dejo nuestra consulta:
Hoy notamos que uno de nuestros servidores Web se quedaba sin recursos, y notamos que habia màs de 4000 conexiones desde el servidor web hacia el servidor de BD Informix (puerto 1526). Conexiones al puerto 80 serìan unas 30.
En el Informix vimos que había unos 5400 sesiones activas todas provenientes del usuario de Internet, osea 3W
Las sesiones dentro del Informix estaban toda vivas, por ej alguna de ellas:
informix@ifxserver:~] onstat -g sql 3124552
IBM Informix Dynamic Server Version 11.50.FC6WE – On-Line – Up 73 days 10:12:18 – 5207832 Kbytes
Sess SQL Current Iso Lock SQL ISAM F.E.
Id Stmt type Database Lvl Mode ERR ERR Vers Explain
3124552 - fpoligrado CR Not Wait 0 0 9.22 Off
Last parsed SQL statement :
execute procedure sp_operaciones_net(‘15348’,‘10988566’,3)
Adjunto algunas capturas adicionales.
Por lo que pudimos ver, es como que no se estàn cerrando correctamente las sesiones que abren los alumnos desde el 3W…
Me ocurre esta situación cuando el motor se queda sin logical logs para usar y mantiene todas las conexiones desde el servidor web.
Cuando hago un respaldo de los mismos, se liberan todas esas conexiones.
Nunca llegué a tener tantas, pero habremos llegado a 350
Lo que estás viendo con el nbtstat son sockets abiertos entre dos máquinas.
Lo que sinceramente no tengo idea es quien los abre. Si el php se ejecuta como un modulo del apache, al socket lo abre el php o lo abre el apache? De acuerdo a eso habría que ver que configuración es la que hay que revisar.
Habría que revisar lo que dice Damian, pero te debería fallar si no hay logical logs.
Fijate en la funcion que establece la conexión desde el guarani si tenes $objCC->Connect
o PConnect.
Tenemos un backup continuo de logical logs…por eso descarto que venga por ahí el problema. Aparte viene de hace días esto, y todos los días se toman varios backups completos, incluso exports donde se baja la instancia.
Por otro lado, consulto: estabamos biendo la v2.6.5, pero sigue utilizando Connect?
El asunto es que si una página anterior creo la clase, la siguiente la reusa y no abre una nueva conexion.
Con eso bajas las conexiones que usa cada alumno.
Claudio, la version 2.6.5 tiene optimizaciones en cuanto a las conexiones que se establecen desde G3w al motor, reduciendo considerablemente la comunicación entre ambos.
OK, en los próximos días haremos el versionado.
Por ahora lo que hicimos fue configurar las conexiones como persistentes con PConnect y de esa forma ya no vemos las miles de conexiones activas. Tampoco exesivos consumos de memoria en el servidor Web…cosas contrarías a las encontradas por la gente de UNC o La Plata…
Estaría bueno retomar este tema junto a esas Universidades para ver la situación actual y la solución que han encontrado ya que en este foro solo vi respuestas parciales y no se publicaron las configuraciones exitosas o actuales…
En el último comité del año pasado presentamos las optimizaciones que nosotros desarrollamos en detalle, y para el que viene (el 27 de este mes) invitamos a éstas universidades para que compartan su experiencia en este sentido y cuenten en el comité cómo fueron sus experiencias, la configuración, medidas que tomaron, etc… Así que entendemos que será interesante.
Te referis al Connect y PConnect o al std_functions.lib.php completo?
Por otro lado, les comento que seguimos con problemas. Luego de probar distintas conbinaciones de PConnect, Connect, KeepAlive On y Off, etc etc el servidor Web Apache sigue manteniendo conexiones activas con la base de datos a pesar de no haber nadie conectado. El problema es que al superar las 2000 el servidor se cae. La unica solucion hasta el momento es reinicios del servicio programados para eliminar estas conexiones.
Aparentemente esto comenzo a suceder luego de una actualización del sistema Linux completo, en donde se actualizo PHP (manteniendo la release 5.1) Apache, etc.