Varios scripts Perl (Server Side Includes) llaman a un módulo Perl con muchas funciones en un sitio web. EDITAR: Los scripts están utilizando use lib para hacer referencia a las bibliotecas desde una carpeta. Durante períodos ocupados, los scripts (no las bibliotecas) se vuelven zombis y sobrecargan el servidor.¿Cómo puedo evitar zombies en las secuencias de comandos Perl CGI que se ejecutan en Apache 1.3?
Las listas de servidores:
319 ? Z 0:00 [scriptname1.pl] <defunct>
320 ? Z 0:00 [scriptname2.pl] <defunct>
321 ? Z 0:00 [scriptname3.pl] <defunct>
que tienen cientos de ejemplos de cada uno.
EDIT: No estamos utilizando tenedor, sistema o ejecutivo, aparte forman la directiva SSI
<!--#exec cgi="/cgi-bin/scriptname.pl"-->
Por lo que yo sé, en este caso httpd en sí será el propietario del proceso. MaxRequestPerChild se establece en 0, lo que no debe permitir que los padres fallezcan antes de que el proceso hijo haya finalizado.
Hasta ahora hemos pensado que suspender temporalmente algunas de las secuencias de comandos ayuda al servidor a hacer frente a los procesos difuntos y evitar que caiga, sin embargo, los procesos zombies aún se están formando sin lugar a dudas. Aparentemente gbacon parece ser lo más cercano a la verdad con su teoría de que el servidor no puede hacer frente a la carga.
¿Qué podría llevar a httpd a abandonar estos procesos? ¿Existe alguna práctica recomendada para evitar que esto suceda?
Gracias
Respuesta: El punto va a Rob. Como él dice, los scripts CGI que generan SSI no tendrán esos SSI manejados. La evaluación de SSI ocurre antes de la ejecución de CGI en el ciclo de solicitud de Apache 1.3. Esto se solucionó con Apache 2.0 y versiones posteriores para que los CGI puedan generar comandos de SSI.
Como estábamos ejecutando Apache 1.3, por cada vista de página los SSI se convirtieron en procesos difuntos. Aunque el servidor intentaba borrarlos, estaba demasiado ocupado con las tareas en ejecución para poder tener éxito. Como resultado, el servidor se cayó y dejó de responder. Como una solución a corto plazo, revisamos todos los SSI y trasladamos algunos de los procesos al lado del cliente para liberar recursos del servidor y darle tiempo de limpieza. Más tarde nos actualizamos a Apache 2.2.
necesita tirar una bomba de tubo –
La escopeta de doble cañón también funciona bien. – Nate
No les dejes comer tu cerebro también. – Hai