Hola,
les escribo para comentarles un problema que no está pasando en forma aleatoria con el Guarani 3W.
Nuestra configuración Actual es la siguiente:
Windows 2003 Server
PHP 5.2.13
Apache 2.2
Conexión mediante adodb a la base
Cliente de Informix 9.51 2.70 TC1
Ante diversos problemas de contención que hemos tenido, hemos decidido mover los sitio de IIS a Apache, manteniendo la plataforma del sistema operativo, Windows.
Hemos realizado pruebas, modificando la función conectar() de la libería std_functions.lib.php, cambiando la invocación a connect() por pconnect() para mantener conexiones persistentes y que se reusen, debido a que notabamos que se generaban muchas conexiones por cada acceso al sitio.
Esto solucionó en forma inmediata el problema del acceso al web en particular para inscripciones masivas con cupo, pero trajo algunos problemas de “Out of Memory” en forma aleatoria, dejando el servicio Apache caido. Además genera muchisima alocación de memoria en el motor de base de datos que no se utilizaba y nunca se liberaba.
Los errores en el web aparecen en forma aleatoria, teniendo aparentemente como origen la libería de adodb, que es la estamos utilizando y la cual fue provista en la versión actual de Guarani 3W.
Hemos variado las configuraciones de Apache sin exito alguno, modificando los parámetros tanto del servidor apache como del php.ini , sin lograr exito, debido a que por más que el equipo cuente con 16 Gb de RAM, se cuelga el proceso Apache.
Les copio las partes importantes de la configuración de php y apache para poder cotejar con Uds y que puedan contar la experiencia de Uds en sus instalaciones.
(php.ini) PHP
max_execution_time = 180 ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M ; Maximum amount of memory a script may consume (128MB)
[Informix]
; Default host for ifx_connect() (doesn’t apply in safe mode).
ifx.default_host =
; Default user for ifx_connect() (doesn’t apply in safe mode).
ifx.default_user =
; Default password for ifx_connect() (doesn’t apply in safe mode).
ifx.default_password =
; Allow or prevent persistent links.
ifx.allow_persistent = On
; Maximum number of persistent links. -1 means no limit.
ifx.max_persistent = -1
; Maximum number of links (persistent + non-persistent). -1 means no limit.
ifx.max_links = -1
; If on, select statements return the contents of a text blob instead of its id.
ifx.textasvarchar = 0
; If on, select statements return the contents of a byte blob instead of its id.
ifx.byteasvarchar = 0
; Trailing blanks are stripped from fixed-length char columns. May help the
; life of Informix SE users.
ifx.charasvarchar = 0
; If on, the contents of text and byte blobs are dumped to a file instead of
; keeping them in memory.
ifx.blobinfile = 0
; NULL’s are returned as empty strings, unless this is set to 1. In that case,
; NULL’s are returned as string ‘NULL’.
ifx.nullformat = 0
En relación a lo de PHP hemos leido que las variables de ifx de este archivo no tienen injerencia en las nuevas versiones de PHP.
Apache
Timeout 10 Keepalive On ThreadsPerChild 100 MaxKeepAliveRequests 100 KeepAliveTimeout 60 ThreadLimit 100 MaxMemFree 512Estas son las configuraciones que he ido variado sin lograr exito alguno.
Para darles dimensión del equipo, en este equipo residen todos los web de más de 10 unidades académicas. Lo extraño de esto es que en este momento el equipo no tiene carga ni accesos considerables y la caida del Web se ve por ese lado.
Les copio alguno de los errores:
[Mon Apr 25 17:25:14 2011] [error] [client 68.171.231.20] PHP Fatal error: Out of memory (allocated 1310720) (tried to allocate 98304 bytes) in C:\sitios\Veterinarias\adodb\adodb-time.inc.php on line 1302, referer: https://www.guarani-veterinarias.unlp.edu.ar/a_general/operaciones.php
Pero no siempre ocurre de la misma forma.
Alguien está usando el Pconnect?
Alguno pudo manejar las conexiones con PConnect como si fuera un Pool?
El código de Guarani en ningún momento hace un close de las conexiones. Con PConnect he leido que se cierran cuando se reinicia el Apache o el proceso FastCgi si se utiliza.
Alguno pudo regular las conexiones persistentes, colocando un límite de cantidad?
Estaría bueno utilizar este hilo para que Uds cuenten sus configuraciones, compararlas, hacer la mejor configuración teniendo en cuenta que hay instalaciones muy grandes como la de UNLP.
Todo comentario es bienvenido,
Saludos,
Lic. Alejandro Sabolansky
Responsable de Seguridad
Equipo Guarani - La Plata