Páginas

jueves, 10 de noviembre de 2016

Problemas en Apache '/opt/apache/bin/httpd -k start'

Hola

He revisando cierto servidor Apache de desarrollo donde apache no respondía ni por el puerto 80 ni por el puerto 443 (timeout siempre), verifiqué que el Apache estaba aparentemente levantado mirando si había un proceso escuchando el 80 y el 443:

[usuarioxxxxxx@desa11 logs]$ sudo netstat -tulpn

   tcp        0      0 :::443        :::*           LISTEN      1662/httpd
   tcp        0      0 :::80          :::*           LISTEN      1662/httpd

Como sí que lo había, intenté pararlo/arrancarlo del modo habitual obteniendo un error relativo a que los puertos estaban siendo utilizados:

[usuarioxxxxxx@desa11 logs]$ sudo /etc/init.d/apache stop
[usuarioxxxxxx@desa11 logs]$ sudo /etc/init.d/apache start

Saqué toda la info posible del proceso 1662:

   [usuarioxxxxxx@desa11 logs]$ ps -Af | grep 1662
   root      1662  1660  0 09:54 ?        00:00:00 /opt/apache/bin/httpd -k start

Y me quedé rallado con '/opt/apache/bin/httpd -k start', de donde salía ese '-k' que nunca había observado.

Maté el proceso sin mas:

   [usuarioxxxxxx@desa11 logs]$ sudo kill 1662

Volví a levantar el apache del modo habitual:

   [usuarioxxxxxx@desa11 logs]$ sudo /etc/init.d/apache start
   Apache/2.2.23 mod_ssl/2.2.23 (Pass Phrase Dialog)
   Some of your private key files are encrypted for security reasons.
   In order to read them you have to provide the pass phrases.
   Server www.example.com:443 (RSA)
   Enter pass phrase:
   OK: Pass Phrase Dialog successful.

Tras el rearranque anterior del Apache de ya funcionaba todo sin problemas, pero revisando de nuevo los puertos de nuevo SORPRESA!!!:

[usuarioxxxxxx@desa11 ~]$ sudo netstat -tulpn

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name  
tcp        0      0 :::443                      :::*                       LISTEN      2417/httpd        
tcp        0      0 :::80                       :::*                        LISTEN      2417/httpd        
[usuarioxxxxxx@desa11 ~]$ ps -Af | grep 2417
root      2417     1  0 10:33 ?        00:00:00 /opt/apache/bin/httpd -k start
apache    2419  2417  0 10:33 ?        00:00:00 /opt/apache/bin/httpd -k start
apache    2420  2417  0 10:33 ?        00:00:00 /opt/apache/bin/httpd -k start
apache    2421  2417  0 10:33 ?        00:00:00 /opt/apache/bin/httpd -k start
apache    2422  2417  0 10:33 ?        00:00:00 /opt/apache/bin/httpd -k start
apache    2423  2417  0 10:33 ?        00:00:00 /opt/apache/bin/httpd -k start
apache    2500  2417  0 10:48 ?        00:00:00 /opt/apache/bin/httpd -k start
apache    2501  2417  0 10:48 ?        00:00:00 /opt/apache/bin/httpd -k start
apache    2502  2417  0 10:48 ?        00:00:00 /opt/apache/bin/httpd -k start
apache    2503  2417  0 10:48 ?        00:00:00 /opt/apache/bin/httpd -k start
apache    2529  2417  0 10:52 ?        00:00:00 /opt/apache/bin/httpd -k start

Resulta que tenemos 'N threads' de Apache corriendo. Tiene pinta de que el proceso padre PID=2417 hace un fork de sí mismo por cada peticion recibida, creánmdose un proceso hijo (PIDs=2419...2529). Esto lo he verificado levantando un navegador y atacando uno de los portales del server.

Antes por lo que fuese, el proceso padre (1662) estaba tostado y no se dejaba parar del modo habitual, ahora el proceso padre (2417) lo paro sin problemas con:

   sudo /etc/init.d/apache/start
   sudo /etc/init.d/apache/stop

Como siempre usamos estos scripts no habíamos visto nunca que Apache se para/arranca/etc (a pelo) con la opción '-k':

   /opt/apache/bin/httpd -k start|stop| ...

REFERENCIAS

http://httpd.apache.org/docs/current/programs/httpd.html

No hay comentarios:

Publicar un comentario