Apache: Merkwürdige "Too many open files"-Probleme

rapsoel

New Member
Hallo,

wir haben schon lange danach gegoogelt und speziell hier in diesem Forum zahlreiche Threads zu unserem Problem durchgelesen, aber lösen konnten wir es bisher leider nicht :(
Folgendes: Wir haben einen vServer mit Debian Etch und Confixx, auf dem wir eine einzelne Webseite auf einem Apache mit der Versionsnummer 2.2.3 laufen lassen (PHP 5.2.9, MySQL 5.0.81). Die CPU-Auslastung bleibt konstant unter einem Prozent und von 384 MB fest zugesichertem RAM sind in der Regel 230 MB in Benutzung. Anscheinend können wir kurzzeitig sogar knapp 590 MB beanspruchen.
Code:
vzfree
VPS Speichernutzung:
Momentan genutzt:       227.242 MB
Maximal genutzt:        227.875 MB
Zugesichert:            384 MB
Maximal nutzbar:        588 MB
Sobald die Last kurz etwas höher wird, fängt der Server jedoch an zu spinnen.

Aus dem Apache-Errorlog:
Code:
[Mon Jun 15 20:33:37 2009] [crit] [client 77.183.26.7] (23)Too many open files in system: /var/www/web0/html/css/ui/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://losecatcher.de/zechenpopup.php
[Mon Jun 15 20:33:37 2009] [error] [client 84.165.237.132] PHP Fatal error:  require_once() [<a href='function.require'>function.require</a>]: Failed opening required 'funktionen/db.php' (include_path='.') in /var/www/web0/html/zechenpopup.php on line 2
[Mon Jun 15 20:33:37 2009] [crit] [client 77.183.26.7] (23)Too many open files in system: /var/www/web0/html/css/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://losecatcher.de/zechenpopup.php
[Mon Jun 15 20:33:37 2009] [crit] [client 77.183.26.7] (23)Too many open files in system: /var/www/web0/html/css/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://losecatcher.de/zechenpopup.php
[Mon Jun 15 20:33:37 2009] [crit] [client 217.186.75.209] (23)Too many open files in system: /var/www/web0/html/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://losecatcher.de/earn/forcedklick/
[Mon Jun 15 20:33:38 2009] [error] [client 77.183.26.7] PHP Fatal error:  require_once() [<a href='function.require'>function.require</a>]: Failed opening required 'funktionen/session.php' (include_path='.') in /var/www/web0/html/zechenpopup.php on line 6, referer: http://losecatcher.de/zechenpopup.php
[Mon Jun 15 20:33:38 2009] [error] [client 84.165.237.132] PHP Fatal error:  require_once() [<a href='function.require'>function.require</a>]: Failed opening required 'funktionen/db.php' (include_path='.') in /var/www/web0/html/zechenpopup.php on line 2
[Mon Jun 15 20:33:39 2009] [error] [client 77.183.26.7] PHP Fatal error:  require_once() [<a href='function.require'>function.require</a>]: Failed opening required 'cache.php' (include_path='.') in /var/www/web0/html/funktionen/session.php on line 3, referer: http://losecatcher.de/zechenpopup.php
[Mon Jun 15 20:33:39 2009] [error] [client 84.165.237.132] PHP Fatal error:  require_once() [<a href='function.require'>function.require</a>]: Failed opening required 'cache.php' (include_path='.') in /var/www/web0/html/funktionen/session.php on line 3
Die User bekommen dann die verschiedensten Fehlermeldungen, von require_once-Fehlern bis zu 403ern.
Hier der Verlauf die RAM-Auslastung von gestern Abend, als die eben zitierten Fehler auftraten. Eine besondere Spitzenbelastung kann ich da nicht erkennen.

Noch einige weitere Auszüge mit etwas anderen Meldungen - vermutlich ist es trotzdem das selbe:
Code:
[Tue Jun 16 14:58:07 2009] [error] [client 195.158.188.3] (23)Too many open files in system: file permissions deny server access: /var/www/web0/html/img/ui/dark/menuhead.png, referer: http://losecatcher.de/css/ui/dark.css
[Tue Jun 16 14:58:07 2009] [error] [client 195.158.188.3] PHP Fatal error:  Unknown: Failed opening required '/var/www/web0/html/error/403.php' (include_path='.') in Unknown on line 0, referer: http://losecatcher.de/css/ui/dark.css
[...]
[Tue Jun 16 14:58:43 2009] [crit] [client 77.183.31.229] (23)Too many open files in system: /.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://losecatcher.de/zechenpopup.php

Ich will mal versuchen, so viele Informationen wie möglich mitzugeben.
ulimit -n sagt 16384, ist auch für root und für www-data in der /etc/security/limits.conf so eingestellt bzw. wird im apache-Startscript nochmal gesetzt.
Anzahl der offenen Files:
Code:
hc121071:~# lsof -n|grep -oE '^[a-z]+'|sort|uniq -c|sort -n
      8 klogd
      9 grep
      9 logger
      9 uniq
     10 init
     10 sleep
     13 pipelog
     13 sh
     15 procmail
     18 sort
     19 syslogd
     20 vsftpd
     21 lsof
     28 anvil
     28 couriertc
     28 pickup
     29 qmgr
     30 lighttpd
     33 saslauthd
     33 trivial
     34 cleanup
     34 local
     35 courierlo
     36 bash
     38 python
     42 cron
     52 sftp
     76 spamd
    117 sshd
    120 master
    129 authdaemo
    208 php
    380 mysqld
   1338 apache
Die Zahl der von Apache geöffneten Files schwankt stark, mal ist sie bei 1000, mal bei 1700.

Als gerade die Probleme auftraten, bekam ich mal
Code:
hc121071:~# lsof -n|grep -oE '^[a-z]+'|sort|uniq -c|sort -n
-bash: fork: Nicht genügend Hauptspeicher verfügbar
Ich weiß allerdings nicht, ob das noch aktuell ist, da wir seitdem den RAM-Verbrauch deutlich reduziert haben, v.a. durch Anpassen der MySQL-Konfiguration.

Code:
hc121071:~# cat /proc/user_beancounters
Version: 2.5
       uid  resource           held    maxheld    barrier      limit    failcnt
     9241:  kmemsize        7302833    7328154    9813565   10794921     386412
[...]
            numfile            2507       2540       3840       3840          0
[...]
Könnte es vielleicht doch ein Speicherproblem sein? Auch wenn top und vzfree immer "massig" freien RAM anzeigen? :(

Hier ein Auszug aus unserer Apache2-Konfiguration:
Code:
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 1

<IfModule mpm_prefork_module>
    StartServers          6
    MinSpareServers       2
    MaxSpareServers      7
    MaxClients           30
    MaxRequestsPerChild   500
</IfModule>
Und noch etwas aus der my.cnf:
Code:
key_buffer		= 4M
max_allowed_packet	= 16M
thread_stack		= 128K
thread_cache_size       = 8

myisam-recover         = BACKUP
max_connections        = 30
table_cache            = 250

tmp_table_size = 32M
max_heap_table_size = 32M

innodb_buffer_pool_size = 20M
innodb_additional_mem_pool_size = 5M
innodb_log_buffer_size = 2M
innodb_flush_log_at_trx_commit = 0

query_cache_limit	= 1M
query_cache_size        = 2M
query_cache_min_res_unit = 2K

Samstag Abend kam irgendwann immer die selbe Fehlermeldung (require_once - "Failed opening required ..."), die dann verschwand, als wir auf den gesamten html-Ordner chown www-data -R * angewandt haben :confused: Dabei hatten wir an den ownern garnichts geändert.
Die Probleme traten später allerdings wieder auf, wie der Errorlog-Ausschnitt oben zeigt.
Wir wissen mittlerweile echt nicht mehr weiter und sind nur noch am rumprobieren, aber das hilft auch nicht. Deshalb hoffen wir, dass Ihr uns vielleicht weiterhelfen könnt.
Wenn weitere Informationen benötigt werden, einfach Bescheid sagen!

Schonmal vielen Dank im Voraus,
Raphael Brandis
 
Der hohe Failcount von kmemsize spricht eindeutig für ein massives Ramproblem. Da hilft nur alles entschlacken und nochmal probieren oder mehr Ressourcen beim Anbieter kaufen.
 
Der hohe Failcount von kmemsize spricht eindeutig für ein massives Ramproblem. Da hilft nur alles entschlacken und nochmal probieren oder mehr Ressourcen beim Anbieter kaufen.

Danke für deine Antwort :)
Was mich dabei wundert, ist, dass von 384 zugesicherten MB RAM 230 MB, maximal 250 MB in Benutzung sind (siehe Verlaufsgrafik), wenn die Fehler auftreten - zumindest, wenn man der Ausgabe von vzfree / top / htop glauben darf.
 
Back
Top