Too many files opened
Thilo Fester
- webserver
Heyho,
ich hab ein ziemlich unangenehmes Problem.
Bei allerlei Anwendungen kriege ich die obige Meldung.
Ich habe hier eine SuSE 9.3 auf einem vServer und werde damit so langsam arbeitsunfähig.
Hier vielleicht mal ein paar Einzeiler:
runner:/etc # lsof | awk -F\ '{printf("%s\n",$1)}' | sort | uniq -c | sort -bg
1 COMMAND
4 init
7 klogd
13 mysqld_sa
14 pipelog.p
16 awk
17 cron
21 uniq
22 syslogd
23 freshclam
23 lsof
23 xinetd
24 clamd
26 saslauthd
27 pickup
27 proxymap
27 qmgr
28 anvil
29 tlsmgr
37 trivial-r
42 sort
48 smtpd
60 bash
92 amavisd
123 master
133 mysqld
219 sshd
456 httpd2-pr
runner:/etc # /sbin/sysctl fs.file-max
fs.file-max = 524288
Ich check nicht ganz. Was da nicht funktioniert. Kann mir bitte jemand helfen?
Beste Grüße
~ Thilo
你好 Thilo,
219 sshd
456 httpd2-pr
SSHd mit 219 offenen Files? HTTPd mit 456? Scheint mir etwas viel... was ist das für ein System, also, wie wird es eingesetzt?
Aber davon ab: man bräuchte die Daten von den Zeitpunkten, wenn der Fehler auftritt. So sieht man zwar ein paar "Ausreisser", aber wirklich etwas sagen kann man nicht.
再见,
克里斯蒂安
Hallo Christian,
219 sshd
456 httpd2-prSSHd mit 219 offenen Files? HTTPd mit 456? Scheint mir etwas viel...
Ja das ist mir in der Tat auch aufgefallen. Die Werte sind derzeit ähnlich hoch beim sshd und beim httpd auf über 600.
was ist das für ein System, also, wie wird es eingesetzt?
Es handelt sich um einen Webserver. Das Problem dabei ist, dass besonders in der Hauptbesuchszeit so gegen 20.00 da echt fast nix mehr funktioniert.
Aber davon ab: man bräuchte die Daten von den Zeitpunkten, wenn der Fehler auftritt. So sieht man zwar ein paar "Ausreisser", aber wirklich etwas sagen kann man nicht.
Ja, Ausreißer sind es jetzt insofern, weil ich das Problem bemerkt habe.
Es ist mir echt unangenehm, aber ich kann in den Logs keine Informationen über diese Fehler finden, was vermutlich auch einfach daran liegt, dass das System nicht in der Lage ist, eine Datei zu öffnen um diesen Fehler zu protokollieren.
Die Meldung kommt vom Apache über einzelne Konsolenprogs bishin zu man bei so ziemlich allem, was läuft und lässt die Anwendungen schließlich crashen.
Weißt Du vielleicht bescheid, was hier allgemein im argen liegen könnte?
Selbst wenn ich das ursprüngliche Problem jetzt nicht gleich lösen kann, ist es vielleicht hilfreich einfach dieses Limit erhöhen zu können ( obwohl, wie oben ja zu sehen ist, fs.file-max gar nicht überschritten ist ( oder ist das vielleicht gar nicht der Wert, der die maximale Anzahl geöffnet Dateien festlegt?)).
Beste Grüße
~ Thilo Fester
你好 Thilo,
Weißt Du vielleicht bescheid, was hier allgemein im argen liegen könnte?
Nein... da muss du ein wenig investigative Arbeit betreiben:
Selbst wenn ich das ursprüngliche Problem jetzt nicht gleich lösen kann, ist es vielleicht hilfreich einfach dieses Limit erhöhen zu können
Ja, das könntest du mal ausprobieren. Einfach echo neue-zahl > /proc/sys/fs/file-max
.
( obwohl, wie oben ja zu sehen ist, fs.file-max gar nicht überschritten ist ( oder ist das vielleicht gar nicht der Wert, der die maximale Anzahl geöffnet Dateien festlegt?)).
Doch, doch, das ist der.
Der fällt mir ein? vServer, hast du gesagt? Da kann ich mir noch gut vorstellen, dass die anderen Nutzer auf dem vServer mit dir zusammen an das Limit kommen. Es sieht ja zwar so aus, als hättest du eine vollständig eigene Umgebung, aber du hast sie nicht wirklich ;) Solche globalen Ressourcen teilst du dir mit den anderen Nutzern auf dem System.
再见,
克里斯蒂安
- Was sagt ulimit -n? Interessant ist das für deinen Benutzer und den Benutzer deines Apachen.
runner:~ # ulimit -n
1024
runner:~ # lsof -n | grep wwwrun | wc -l
295
runner:~ # lsof -n | grep root | wc -l
747
- Hast du unter /etc/security/limits.conf bzw. /etc/security/limits.d/ etwas stehen/liegen?
Nein, alles in limits.conf ist auskommentiert. limits.d existiert nicht.
- Irgendwelche RLimit-Einstellungen?
Nicht, dass ich wüsste.
Der fällt mir ein? vServer, hast du gesagt? Da kann ich mir noch gut vorstellen, dass die anderen Nutzer auf dem vServer mit dir zusammen an das Limit kommen. Es sieht ja zwar so aus, als hättest du eine vollständig eigene Umgebung, aber du hast sie nicht wirklich ;) Solche globalen Ressourcen teilst du dir mit den anderen Nutzern auf dem System.
Mal schauen, ob sich dahingehend was rausfinden lässt. Daran hatte ich noch gar nicht gedacht!
Momentan siehts nicht gut aus. Mittlerweile erhalte ich Speicherzugriffsfehler, beispielseise sogar beim Aufruf von w.
[Moment einer kleinen Krise]
Ich habe den Eintrag in /proc/sys/fs/file-max verdoppelt. Jetzt gehts scheinbar wieder.
So, ich beobachte das jetzt einmal genau.
Vielen Dank für Deine Unterstützung! : )
Beste Grüße
~ Thilo
你好 Thilo,
Ich habe den Eintrag in /proc/sys/fs/file-max verdoppelt. Jetzt gehts scheinbar wieder.
Denk daran, dass das nach jedem booten neu eingetragen werden muss. Das ist keine dauerhafte Einstellung, das gilt jetzt nur für diese "Session".
再见,
克里斯蒂安
Was mich noch wundert...
runner:~ # echo 1048576 > /proc/sys/fs/file-max
runner:~ # cat /proc/sys/fs/file-max
524288
Nunja, aber es geht. Das Problem ist damit scheinbar trotzdem beseitigt. Schon ein bisschen seltsam oder?
Denk daran, dass das nach jedem booten neu eingetragen werden muss. Das ist keine dauerhafte Einstellung, das gilt jetzt nur für diese "Session".
Jo, hab 'nen kleines Skript geschrieben.
你好 Thilo,
Was mich noch wundert...
runner:~ # echo 1048576 > /proc/sys/fs/file-max
runner:~ # cat /proc/sys/fs/file-max
524288Nunja, aber es geht. Das Problem ist damit scheinbar trotzdem beseitigt. Schon ein bisschen seltsam oder?
Vielleicht hast du einfach nicht die notwendigen Rechte. Oder es gibt ein oberes Limit, so genau weiss ich das leider auch nicht auswendig, da müsste ich erst nachlesen (kann ich aber erst heute Abend ;)
Und beseitigt: hört sich für mich eher aufgeschoben an.
再见,
克里斯蒂安
Und beseitigt: hört sich für mich eher aufgeschoben an.
Ich wünschte Du hättest Unrecht!
Kann sein, dass ich dem Problem gerade ein wenig näher gekommen bin.
Ein Auszug aus /proc/user_beancounters:
Version: 2.5
uid resource held maxheld barrier limit failcnt
runner: numfile 2516 3008 3008 3008 41757
Wenn ich das richtig verstehe, heißt das wohl, dass mein vServer jetzt an seine Kapazitätsgrenzen stößt. Muss ich wohl wirklich mal beim Anbieter nachfragen, ob die mir da noch irgendwie was zustecken ^^
Oder mal schaun, wieso der httpd soviele Files öffnet und ob sich das nochn bisschen optimieren lässt.
Was heißen eigentlich die lustigen Zeichen?
Hallo und freundliche Grüße oder wie? ^^
Beste Grüße
~ Thilo
你好 Thilo,
Wenn ich das richtig verstehe, heißt das wohl, dass mein vServer jetzt an seine Kapazitätsgrenzen stößt.
Sieht ganz danach aus, ja.
Was heißen eigentlich die lustigen Zeichen?
Hallo und freundliche Grüße oder wie? ^^
Genau, sowas in die Richtung ;)
再见,
克里斯蒂安