apache liefert nicht mehr aus -- too many open files

Apache, Lighttpd, nginx, Cherokee
Post Reply
oliverd
Posts: 36
Joined: 2002-08-17 16:25
 

apache liefert nicht mehr aus -- too many open files

Post by oliverd »

hi,

seit dem ich das confixx2 pro drauf habe, geht der mir regelmaessig um ab 1:40 Uhr
too many files open
und dazu das er eine datei nicht oeffnen konnte, oder das dann da nurnoch client socket steht.

Im end effekt ist es so, das apache einfriert.

Aber nach Uhrzeit ;) Genau die selbe installation vor confixx hatte das problem nicht. Ich habe bei confixx alle scripte auf 8 Uhr gestellt, um zu schaun ob es dort einen uebeltaeter gibt. Leider Negativ.

Im moment bleibt mir nur den apache komplett zu killen und neu hoch zu fahren.

gruesse
Oliver
jtb
Posts: 599
Joined: 2002-08-18 16:41
Location: Darmstadt
Contact:
 

Re: apache liefert nicht mehr aus -- too many open files

Post by jtb »

Hi,

Code: Select all

echo 5000 > /proc/sys/fs/file-max
sollte dir helfen..
du musst halt nur die Zahl anpassen - bei mir unter Debian sind z.Z. 8192 eingestellt.

Folgendes zeigt dir die aktuelle Einstellung an:

Code: Select all

cat /proc/sys/fs/file-max
alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover
Contact:
 

Re: apache liefert nicht mehr aus -- too many open files

Post by alexander newald »

Jtb wrote:Hi,

Code: Select all

echo 5000 > /proc/sys/fs/file-max
sollte dir helfen..
du musst halt nur die Zahl anpassen - bei mir unter Debian sind z.Z. 8192 eingestellt.

Folgendes zeigt dir die aktuelle Einstellung an:

Code: Select all

cat /proc/sys/fs/file-max
Wenn der Server sehr lange läuft und du apache nur mit graceful reloadest hilft auch folgendes Perlskript:

Code: Select all

#!/usr/bin/perl
system("killall -9 httpd");
$tmp = `/usr/bin/ipcs -s | grep wwwrun`;
@tmp= split(/n/,$tmp);
foreach $tmp (@tmp)
        {
        $tmp =~ s/[      ]{1,}/ /g;                # Einmal TAB und einmal Space!!
        $pid = (split(/ /,$tmp))[1];
        system("/usr/bin/ipcrm sem $pid");
        }
Hilft nicht immer aber meistens (Kommt darauf an, ob oft httpd Prozesse noch aktiv waren, als der apache das graceful bekommen hat)

Sollte dies nicht die Ursache sein, hilft obriger Vorschlag nur, wenn du als root die max_open_files für wwwrun (bzw. den User unter der Apache läuft) auch was von den 5000 abgibst. Obriger Vorschlag ändert nur die dem gesamten System zur Verfügung stehende Anzahl. Zu beachten ist auch, dass Apache nicht mehr als 512 (oder waren es 1024, weiss ich jetzt nicht auswendig) open_files nutzen kann.

Alexander Newald
scythe42
Posts: 154
Joined: 2002-10-14 18:30
Location: Internet
Contact:
 

Re: apache liefert nicht mehr aus -- too many open files

Post by scythe42 »

Zu Ergänzug: "inodes-max" gibt es auch noch...
oliverd
Posts: 36
Joined: 2002-08-17 16:25
 

Re: apache liefert nicht mehr aus -- too many open files

Post by oliverd »

cat /proc/sys/fs/file-max
91750
Das ist im moment auf dem System eingestellt, ich denke, das muss nicht hoch :wink:

Ich habe jetzt ein script geschrieben, das den Apache mit einem
/etc/init.d/apache stop
killall apache
/etc/init.d/apache start
Grund neustartet, das hat anscheinend funktioniert.

Ich werde das jetzt nochmal eine Nacht laufen/probieren lassen und dann bescheid geben ob es funktioniert hat.

Aber noch aus reinem Intresse:
Zu Ergänzug: "inodes-max" gibt es auch noch...
Was ist das :?:

gruesse

Oliver
Post Reply