padajici Apache

Zdenek Pytela letty na mrakoplas.phil.muni.cz
Pondělí Duben 28 14:55:41 CEST 2003


Bohdan Milar píše:
> Dobrý den,
> 
> mám RH72 na trvale běžícím stroji a potřebuju na něm rozběhnout intranet 
> server (Apache, MySQL apod.). Už několikrát za dva týdny zkušebního provozu 
> se mi ale stalo, že ráno Apache neběžel:
> 
> -----
> 
> [root na Ekonom root]# /etc/init.d/httpd status
> httpd neběží, ale PID soubor existuje
> [root na Ekonom root]# cat /var/log/httpd/error_log
> ...
> [Sat Apr 26 04:02:06 2003] [warn] child process 29272 did not exit, sending 
> another SIGHUP
> [Sat Apr 26 04:02:06 2003] [warn] child process 29273 did not exit, sending 
> another SIGHUP
> [Sat Apr 26 04:02:06 2003] [warn] child process 29274 did not exit, sending 
> another SIGHUP
> [Sat Apr 26 04:02:06 2003] [warn] child process 29275 did not exit, sending 
> another SIGHUP
> [Sat Apr 26 04:02:06 2003] [warn] child process 29276 did not exit, sending 
> another SIGHUP
> [Sat Apr 26 04:02:06 2003] [warn] child process 29277 did not exit, sending 
> another SIGHUP
> [Sat Apr 26 04:02:06 2003] [warn] child process 29278 did not exit, sending 
> another SIGHUP
> [Sat Apr 26 04:02:06 2003] [warn] child process 29279 did not exit, sending 
> another SIGHUP
> [Sat Apr 26 04:02:07 2003] [warn] child process 29272 still did not exit, 
> sending a SIGTERM
> [Sat Apr 26 04:02:07 2003] [warn] child process 29273 still did not exit, 
> sending a SIGTERM
> [Sat Apr 26 04:02:07 2003] [warn] child process 29274 still did not exit, 
> sending a SIGTERM
> [Sat Apr 26 04:02:07 2003] [warn] child process 29275 still did not exit, 
> sending a SIGTERM
> [Sat Apr 26 04:02:07 2003] [warn] child process 29276 still did not exit, 
> sending a SIGTERM
> [Sat Apr 26 04:02:07 2003] [warn] child process 29277 still did not exit, 
> sending a SIGTERM
> [Sat Apr 26 04:02:07 2003] [warn] child process 29278 still did not exit, 
> sending a SIGTERM
> [Sat Apr 26 04:02:07 2003] [warn] child process 29279 still did not exit, 
> sending a SIGTERM
> [Sat Apr 26 04:02:11 2003] [notice] SIGHUP received.  Attempting to restart
> 
> [root na Ekonom root]# /etc/init.d/httpd restart
> Ukončuji httpd:                                            [SELHALO]
> Startuji httpd:                                            [  OK  ]
> 
> -----
> 
> jindy to v error_logu vypadalo následovně:
> 
> [Wed Apr 23 04:02:05 2003] [warn] child process 21656 did not exit, sending 
> another SIGHUP
> [Wed Apr 23 04:02:05 2003] [warn] child process 21657 did not exit, sending 
> another SIGHUP
> [Wed Apr 23 04:02:05 2003] [warn] child process 21658 did not exit, sending 
> another SIGHUP
> [Wed Apr 23 04:02:05 2003] [warn] child process 21659 did not exit, sending 
> another SIGHUP
> [Wed Apr 23 04:02:05 2003] [warn] child process 21660 did not exit, sending 
> another SIGHUP
> [Wed Apr 23 04:02:05 2003] [warn] child process 21661 did not exit, sending 
> another SIGHUP
> [Wed Apr 23 04:02:05 2003] [warn] child process 21662 did not exit, sending 
> another SIGHUP
> [Wed Apr 23 04:02:05 2003] [warn] child process 21663 did not exit, sending 
> another SIGHUP
> [Wed Apr 23 04:02:06 2003] [notice] SIGHUP received.  Attempting to restart
> PHP Warning:  Unable to load dynamic library '/usr/lib/php4/pgsql.so' - 
> /usr/lib/php4/pgsql.so: cannot open shared object file: není souborem ani 
> adresářem in Unknown on line 0
> [Wed Apr 23 04:02:08 2003] [notice] Apache/1.3.20 (Unix)  (Red-Hat/Linux) 
> mod_ssl/2.8.4 OpenSSL/0.9.6b DAV/1.0.2 PHP/4.0.6 mod_perl/1.24_01 
> mod_auth_pgsql/0.9.9 configured -- resuming normal operations
> [Wed Apr 23 04:02:08 2003] [notice] suEXEC mechanism enabled (wrapper: 
> /usr/sbin/suexec)
> 
> Apache ale běžel (/usr/lib/php4/pgsql.so jsem již doinstaloval). Ve 04:02 se 
	Spíš si zakomentujte příslušnou sekci v php.ini.

> restartují všichni démoni - je to normální? V crontab jsem žádný záznam 
> nenašel. V jiných případech to nevadí, ale Apache se z toho ale často 
	logrotate, ale nevím, proč rotujete každý den? To jste si musel
změnit sám, default je týdně.

> nevzpamatuje. Nevíte, jak tomu předejít?
	Nedaří se restart služby httpd, protože zůstávají viset démoni a
nechce se jim odejít. Hlavně zjistěte, proč vám tam spojení zůstávají viset
- co u vás lidé chtějí, co je na tom tak náročného, a pak třeba změnit
různá nastavení v httpd.conf (počet volných démonů/vláken, počet
zpracovávaných požadavků) nebo php.ini.
	Já jsem restart v podobné situaci vyřešil ve skriptu brutální
metodou, kdy se napřed udělá service httpd stop, pak se provádí různé akce,
a nakonec se ještě před service httpd start provede tato smyčka:

while (1)
 {
  `ps h -C httpd -o %c`;
  if ($?)
  { print "httpd nebezi.\n"; last; }
  else
  { print "httpd bezi... zkousim zabit...\n";
    system qw(killall httpd); }
  `ps h -C httpd -o %c`;
  if ($?)
  { print "httpd uz nebezi.\n"; last; }
  else
  { print "httpd se porad drzi... zkousim vetsi kladivo...\n";
    system qw(killall -9 httpd); last; }
 }

To by mělo zabrat ;-).

-- 

--Zdeněk Pytela, <letty na mrakoplas.phil.muni.cz>



Další informace o konferenci Linux