07 abril 2008

Apache y sus "dummy connection"

Estaba haciendo una revisión de los logs de uno de los nuevos servidores web que tenemos configuracios con apache cuando comencé a ver que había numerosos logs de apache que pintaban así:
::1 - - [07/Apr/2008:06:40:10 -0500] "GET / HTTP/1.0" 301 232 "-" "Apache/2.2.3 (Red Hat) (internal dummy connection)" 82 479



Estaba un poco mosca, y comencé a "googlear" buscando algo de info.

Encontré cosas clarificadoras, y es que esa conexión que hace apache, es la que utiliza para manejar a los hijos, que está presente a partir de la versión 2, pero en versiones anteriores no se escribía.

Buscando más hay gente que dice, que está bien, que es normal, que no pasa nada. Otros que simplemente deshabilitan esa entrada en los logs de apache. A mi lo que me mosqueó es que había gente que decía que el propio apache les hacía un dos con estas peticiones al pedir una página dinámica.

No es nuestro caso, porque el raíz es estático, pero empecé a darle vueltas para ver cómo podría deshabilitarlo.

Al final la cuestión era más simple de lo que pensaba. Resulta que como este servidor era un pepino en la configuración del módulo prefork, indiqué que los minservers y los maxservers fueran iguales. Ahí estaba el error, puesto que no dejándole un exceso de servidores libres para que fluctúe está obligado a matarlos y lo hace con esta petición.

Una vez puse unos parámetros razonables me dejó de aparecer la "conexión tonta" en el log. Aunque supongo que alguna al día tiene que aparecer para hacer reajustes.

Esta es la configuración final que yo tengo (puede ser óptima para nosotros, para otros casos quizás no).

<IfModule prefork.c>   
StartServers 50
MinSpareServers 100
MaxSpareServers 200
ServerLimit 1000
MaxClients 1000
MaxRequestsPerChild 4000
</IfModule>

1 comentario:

delaPipol dijo...

Ees curioso, también busqué información al respecto y también googleando encontré a quien hablaba sobre los parámetros de los hijos del mpm-prefork. En mi caso uso mpm-itk, pero creo que soporta o utiliza los mismos parámetros que prefork mas los suyos adicionales (mpm-itk es útil para evitar los problemas de permisos de www-data si queremos que cada virtual host pertenezca a un usuario, por ejemplo en el caso de usar cuentas en /home para cada web y mantener la privacidad entre ellas).

Gracias por el dato, un saludo.