Thilo Fester: Too many files opened

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

  1. 你好 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.

    再见,
     克里斯蒂安

    --
    Bauer sucht Frau! | Ich bin ja eigentlich kein Serien-Junkie…
    Auf der ganzen Welt gibt es nichts Weicheres und Schwaecheres als Wasser. Doch in der Art, wie es dem Harten zusetzt, kommt nichts ihm gleich.
    http://wwwtech.de/
    1. Hallo Christian,

      219 sshd
          456 httpd2-pr

      SSHd 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

      1. 你好 Thilo,

        Weißt Du vielleicht bescheid, was hier allgemein im argen liegen könnte?

        Nein... da muss du ein wenig investigative Arbeit betreiben:

        • Was sagt ulimit -n? Interessant ist das für deinen Benutzer und den Benutzer deines Apachen.
        • Hast du unter /etc/security/limits.conf bzw. /etc/security/limits.d/ etwas stehen/liegen?
        • Irgendwelche RLimit-Einstellungen?

        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

          1. 你好 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".

            再见,
             克里斯蒂安

            --
            Bauer sucht Frau! | Ich bin ja eigentlich kein Serien-Junkie…
            Der Geist ist alles. Du wirst, was du denkst.
            http://wwwtech.de/
            1. 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.

              1. 你好 Thilo,

                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?

                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.

                再见,
                 克里斯蒂安

                --
                Bauer sucht Frau! | Ich bin ja eigentlich kein Serien-Junkie…
                <Henryk> Those who didn't understand (email,usenenet,...) are doomed to reinvent ist. Poorly.
                http://wwwtech.de/
                1. 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

                  1. 你好 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 ;)

                    再见,
                     克里斯蒂安

                    --
                    Bauer sucht Frau! | Ich bin ja eigentlich kein Serien-Junkie…
                    <Tim> Ich bin nicht hier, um zu helfen. Mir hilft ja auch keiner. Sogar mein Brötchen muss ich mir jetzt selber schmieren.
                    http://wwwtech.de/