Newsgroup: it.comp.os.linux.sys
Titolo: [URGENTE] Apache non riparte

# cat /etc/redhat-release
CentOS release 5.3 (Final)
# uname -a
Linux x 2.6.18-128.1.10.el5 #1 SMP Thu May 7 10:35:59 EDT 2009 x86_64
x86_64 x86_64 GNU/Linux
# httpd -V
Server version: Apache/2.2.11 (Unix)
Server built:   Jun 14 2009 12:33:59
Server's Module Magic Number: 20051115:21
Server loaded:  APR 1.3.3, APR-Util 1.3.4
Compiled using: APR 1.3.3, APR-Util 1.3.4
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
se do un /etc/init.d/httpd restart, apache muore, giustamente, ma poi
non riparte.
L'errore che si presenta (non l'ho sotto mano) è quello tipico che si
riceve quando non si può aprire il socket perchè la porta è già in
uso. (unable to bind bla bla bla)
Effettivamente, la porta 80 resta aperta ben dopo la chiusura la di
apache rendendone impossibile il riavvio.
netstat -na | grep ":80" mostra vagonate (si, vagonate, qualcosa tipo
300-500 connessioni) aperte in established o time_wait.
Come caspiterina faccio a terminare apache chiudendo anche tutte le
connessioni? La cosa è un po problematica perchè ad ogni riavvio di
apache ci vogliono almeno 10 minuti prima che le connessioni vengano
chiuse e che quindi apache possa ripartire.
Credo, ma non son sicuro, che forzando l'eliminazione dei semafori con
qualcosa tipo:
# for i in $(ipcs | grep apache | awk '{print $2}'); do { ipcrm -s
$i; }; done;
mi permetta di riavviare il demone. Non ne son sicuro, potrebbe essere
una semplice coincidenza.
Inoltre, ma non ha niente a che fare con il problema di cui sopra,
ricevo tonnellate di errori tipo:
[Thu Jun 18 20:47:14 2009] [info] [client 1.2.3.4] (32)Broken pipe:
core_output_filter: writing data to the network
[Thu Jun 18 20:47:59 2009] [info] [client 1.2.3.4] (104)Connection
reset by peer: core_output_filter: writing data to the network
[Thu Jun 18 20:47:59 2009] [info] [client 1.2.3.4] (32)Broken pipe:
core_output_filter: writing data to the network
[Thu Jun 18 20:47:59 2009] [info] [client 1.2.3.4] (104)Connection
reset by peer: core_output_filter: writing data to the network
[Thu Jun 18 20:47:59 2009] [info] [client 1.2.3.4] (32)Broken pipe:
core_output_filter: writing data to the network
[Thu Jun 18 20:47:59 2009] [info] [client 1.2.3.4] (104)Connection
reset by peer: core_output_filter: writing data to the network
[Thu Jun 18 20:47:59 2009] [info] [client 1.2.3.4] (32)Broken pipe:
core_output_filter: writing data to the network
[Thu Jun 18 20:48:00 2009] [info] [client 1.2.3.4] (104)Connection
reset by peer: core_output_filter: writing data to the network
[Thu Jun 18 20:48:00 2009] [info] [client 1.2.3.4] (32)Broken pipe:
core_output_filter: writing data to the network
[Thu Jun 18 20:48:01 2009] [info] [client 1.2.3.4] (104)Connection
reset by peer: core_output_filter: writing data to the network
[Thu Jun 18 20:48:01 2009] [info] [client 1.2.3.4] (32)Broken pipe:
core_output_filter: writing data to the network
[Thu Jun 18 20:48:02 2009] [info] [client 1.2.3.4] (104)Connection
reset by peer: core_output_filter: writing data to the network
[Thu Jun 18 20:48:02 2009] [info] [client 1.2.3.4] (32)Broken pipe:
core_output_filter: writing data to the network
[Thu Jun 18 20:48:13 2009] [info] [client 1.2.3.4] (32)Broken pipe:
core_output_filter: writing data to the network
[Thu Jun 18 20:48:20 2009] [info] [client 1.2.3.4] (104)Connection
reset by peer: core_output_filter: writing data to the network
[Thu Jun 18 20:48:20 2009] [info] [client 1.2.3.4] (32)Broken pipe:
core_output_filter: writing data to the network
[Thu Jun 18 20:48:20 2009] [info] [client 1.2.3.4] (104)Connection
reset by peer: core_output_filter: writing data to the network
Gli IP sono sempre diversi e questa fiumana di log va avanti tutto il
giorno.

 chiuse e che quindi apache possa ripartire.
service httpd stop ; sleep 10 ; pkill -9 apache ; service httpd start
Tanto mentre riavvia non da comunque servizio.
-- 
Flavio Visentin
Scientists have finally discovered what's wrong with the female brain:
On the left side, there is nothing right, and on the right side, there
is nothing left.

 service httpd stop ; sleep 10 ; pkill -9 apache ; service httpd start
Non cambia nulla, ho già provato.
Ho ancora esattamente 1787 connessioni in attesa.
Calano, ci mette 5 minuti ma alla fine calano.
Troppo tempo.

 apache rendendone impossibile il riavvio.
Hai qualche processo che rimane "appeso" e ti tiene la porta attiva. Non
sapendo che accidenti hai mi viene da pensare che tu abbia una qualche
web-application che gira in background.
Vedi quali processi tengono la porta 80 attiva (fuser) e killali.
O aggiusta la web-application.
Davide
-- 
Help Microsoft stamp out piracy. Give Linux to a friend today!
   -- From a Slashdot.org post

 O aggiusta la web-application.
Non so come si usa, stando a --help sembrerebbe cos�:
fuser -n tcp 80
ma non tira fuori nulla.
Comunque, ho risolto, o meglio, ho tamponato.
E' un utente che spammava, ovvero 32k mail provenienti da una
pagina web abusata. Killando apache, restavano appese le connessioni.
Ho risolto, giustamente, rimuovendo la pagina abusata, ma se dovesse
ricapitare, come posso tamponare uccidendo TUTTO ci� che sta usando
un determinato socket/porta?
Qualcosa tipo (la sparo li):
killallsock 80
Esiste un modo per chiudere forzatamente tutte le connessioni verso una
determinata porta?
Eviterei, in caso di emergenza, di perdere 10 minuti ad attendere la
chiusura delle connessioni. Poi una volta fatto ripartire, cercher�
chi causa problemi, ma almeno tampono li per li.
Pensavo anche a qualcosa tipo
/etc/init.d/network restart che dovrebbe buttare gi� e s� l'interfaccia
(e con essa tutte le connessioni, forse) ma preferirei evitare
sopratutto se sono in remoto. Se qualcosa va storto mi taglio fuori.