Lightppd: Too many open files

marekventur

New Member
[Ich schon wieder mit meine Lighttpd-Fehlern, sorry ;-)]

Meine error-log verzeichnet seit 1 Woche abertausend-male folgende Fehler:
Code:
 (mod_cgi.c.961) CGI failed: Too many open files in system /usr/bin/php5-cgi
bzw.
Code:
(mod_cgi.c.553) cgi died, pid: 21739
bzw.
Code:
(mod_cgi.c.716) pipe failed: Too many open files in system

Im Browserbleiben dann die Ajax-Calls (davon gibt es ziemlich viele) einfach in der Luft hängen, bzw. bekommen nach Ewigkeiten einen 500er-Fehler

Genauso überflutet ist der Failcount von numfile, der aber 95% der Zeit nicht mal in die Nähe von "Limit" kommt.

Code:
root@vs2318:/var/log/lighttpd# cat /proc/user_beancounters
(...)
numfile            1409       5000       5000       5000    7566121

Meine Frage ist: Hat jemand eine Idee, warum lighttpd schlagartig soviele Dateizugriffe hat, dass das System sperrt? PHP läuft bei mir als CGI (nicht FastCGI)

Code:
cgi.assign = (".php" => "/usr/bin/php5-cgi")

Weiß jemand, wie ich den Fehler eingrenzen könnte? Irgend einen Vorschlag zum Vorgehen?

Vielen Dank im Vorraus, Marek
 
Code:
root@vs2318:/var/log/lighttpd# cat /proc/user_beancounters
(...)
numfile            1409       5000       5000       5000    7566121

Meine Frage ist: Hat jemand eine Idee, warum lighttpd schlagartig soviele Dateizugriffe hat, dass das System sperrt? PHP läuft bei mir als CGI (nicht FastCGI)
Da gibts im Prinzip 2 Möglichkeiten:
1.) du hast viele Zugriffe auf den Server, kannste ja mal in der access-log überprüfen
2.) schlecht gecodete Seite, die einfach viele Dateizugriffe braucht. Das kannste schnell über das Auschlussverfahren durch 1.) prüfen. ;)
 
Hi! Danke für die schnelle Antwort.

Ich glaube schon, dass die Seite den Server durchaus beansprucht, schließlich werden ziemlich viele Ajax-Calls ausgeführt. Was mich jedoch stutzig macht, ist, dass der filenum Counter bei "held" die meiste Zeit einen relativ niedrigen Wert enthält (meistens unter 2000 bei einem Limit von 5000). Rein intuitiv würde ich sagen, dass der VServer eigentlich noch "groß" genug ist.

Nach dem Ausschlußverfahren bleibt also die Programmierung übrig :( Hat jemand eine Idee, wie ich herausfinden kann, welche PHP-Datei der Übeltäter sein könnte?

Edit: Der Access.log ist verdammt groß... Was genau soll mir die Datei den sagen?
 
Hi,

du könntest es mal mit dem Tool lsof versuchen, das kann das glaub ich, aber wie mans bedient kann ich dir net sagen, da hilft nur "man lsof" oder "lsof --help". ;)

//EDIT:
ich würde dir folgendes empfehlen:
Code:
lsof | less
Dann kannst du dir ganz in Ruhe anschauen, wer so viel Zugriffe verursacht. ;)
 
Last edited by a moderator:
Mhhhh.... Ich finde nichts außergeöhnliches, vor allem nichts, was auf eine PHP-Datei hindeutet.... Oder habe ich irgendwas übersehen?
 
Weiß ich nicht, kann ich nicht sehen. ;)

Hast du es denn mal ausgeführt, als du auf eine Seite zugegriffen hast?

//EDIT: Kannst du mir mal den kompletten Auszug aus folgendem Befehl posten bitte?
Code:
cat /proc/user_beancounters
 
Hier einmal komplett:

Code:
cat /proc/user_beancounters
Version: 2.5
       uid  resource           held    maxheld    barrier      limit    failcnt
     2318:  kmemsize        2755938   13789004   20971520   20971520          0
            lockedpages           0          0        344        344          0
            privvmpages       40729      94997     196608     196608          0
            shmpages            640       2896       8192       8192          0
            dummy                 0          0          0          0          0
            numproc              40        256        256        256        390
            physpages         17343      50406          0 2147483647          0
            vmguarpages           0          0     196608     196608          0
            oomguarpages      18477      56013     131072     196608          0
            numtcpsock           16        256        256        256      32898
            numflock              7         76        100        110          0
            numpty                1          1         16         16          0
            numsiginfo            0         61        256        256          0
            tcpsndbuf        146520    1329992    2768240    2768240          0
            tcprcvbuf        245760    1399948    2768240    2768240          0
            othersockbuf     148312     231444     336896     336896          0
            dgramrcvbuf           0       4440     132096     132096          0
            numothersock         92        141        256        256          0
            dcachesize            0          0 2147483647 2147483647          0
            numfile            1111       5000       5000       5000   11119556
            dummy                 0          0          0          0          0
            dummy                 0          0          0          0          0
            dummy                 0          0          0          0          0
            numiptent            14         14        128        128          0

Es sind zwar ein paar SessionID-File-Zugriffe, aber sonst nichts besonderes. Ich habe dabei die Webseite offen.
 
Back
Top