PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache - too many open files.



DLx
04.08.2005, 19:42
Hallo,

ich hab grad mal ein kleines problemdas ich in dieser art noch nicht hatte,
und grad selbst leider nicht auf die loessung komme, daher die etwas doofe frage.

Gestern hatte ich einen kleinen hänger im system (Debian 3.1) und musste mit -9 neustarten. Nun startet sich der liebe apache (1.3.33) nicht mehr.
zuerst kamm nur ein apache.pid fehler, ok kein problem... beseitigt.
nun kommt aber die fehlermeldung:

[warn] (24)Too many open files: unable to open a file descriptor above 15, you may need to increase the number of descriptors

Hat jemand eine idee wie ich denfehler in dengriff bekomme?
Danke für eure hilfe schon mal!

lordlamer
04.08.2005, 19:58
hi!

ich kenne das problem. die fehlermeldung sagts eigentlich schon. du hast zu viele offene dateien. mit dem befehl lsof kannst du sehen welche dateien geöffnet sind von welchem prozess.

als ertes würde ich dir raten wirklich einfach mal den rechner neustarten. dann sollte der apache wider laufen. denke ich.

die frage die nun noch aufkommt ist: wieso hast du diese fehlermeldung. dafür müsstest du mal sagen/zeigen welche module du im apache verwendest und was du so für seiten mit dem apache darstellst. wieviel traffic bzw besucher hast du auf den seiten?

mfg frank

DLx
04.08.2005, 20:13
Hi, danke für deine schnelle antwort.


...als ertes würde ich dir raten wirklich einfach mal den rechner neustarten. dann sollte der apache wider laufen...
Leider nicht :(


dafür müsstest du mal sagen/zeigen welche module du im apache verwendest


AddModule mod_so.c
AddModule mod_macro.c
LoadModule config_log_module /usr/lib/apache/1.3/mod_log_config.so
LoadModule mime_magic_module /usr/lib/apache/1.3/mod_mime_magic.so
LoadModule mime_module /usr/lib/apache/1.3/mod_mime.so
LoadModule negotiation_module /usr/lib/apache/1.3/mod_negotiation.so
LoadModule status_module /usr/lib/apache/1.3/mod_status.so
LoadModule autoindex_module /usr/lib/apache/1.3/mod_autoindex.so
LoadModule dir_module /usr/lib/apache/1.3/mod_dir.so
LoadModule cgi_module /usr/lib/apache/1.3/mod_cgi.so
LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so
LoadModule alias_module /usr/lib/apache/1.3/mod_alias.so
LoadModule rewrite_module /usr/lib/apache/1.3/mod_rewrite.so
LoadModule access_module /usr/lib/apache/1.3/mod_access.so
LoadModule auth_module /usr/lib/apache/1.3/mod_auth.so
LoadModule expires_module /usr/lib/apache/1.3/mod_expires.so
LoadModule setenvif_module /usr/lib/apache/1.3/mod_setenvif.so
LoadModule php4_module /usr/lib/apache/1.3/libphp4.so


...und was du so für seiten mit dem apache darstellst. wieviel traffic bzw besucher hast du auf den seiten?
ca. 600 domains, je domain 1html seite. kaum traffic.


Kann man irgendwo die maximal erlaupte anzahl geöffneter dateien hochsetzen? (in der /etc/security/limits.conf ist nichts eingestellt)

damager
04.08.2005, 20:46
[warn] (24)Too many open files: unable to open a file descriptor above 15, you may need to increase the number of descriptors.

15 ist schon arg wenig!

als welcher user läuft apache ?
was sagt die ausgabe von ulimit -n ?
hast du irgendwelche begrenzungen unter /etc/security/limits.conf ?
was sagt cat /proc/sys/fs/file-max ?
oder sysctl -a unter fs.file-max ?

siehe dazu auch: HIER (http://bbcr.uwaterloo.ca/~brecht/servers/openfiles.html)

DLx
05.08.2005, 02:56
was sagt die ausgabe von ulimit -n ?
1024



als welcher user läuft apache ?
ein extra benutzer... www-run



hast du irgendwelche begrenzungen unter /etc/security/limits.conf ?...
Nein hab da alles auskomentiert.



was sagt cat /proc/sys/fs/file-max ?
49808


15 ist schon arg wenig!
ja würde es gerne ändern, aber wie nur? *g*

lordlamer
05.08.2005, 06:02
hi!

wo du da 600 domains erwähnst. legst du für jede domain eigene logfiles an? also eine eigene access_log und error_log ?

wenn ja müsstest du mal testen die rauszunehmen. das ist auch oft ein grund wieso dieser fehler auftaucht. das würde in diesem zusammenhang auch wieder passen.

mfg frank

Wolfgang
05.08.2005, 12:56
ja würde es gerne ändern, aber wie nur? *g*

Hallo

Du kannst die Limits für den user oder auch die Gruppe als root direkt in der shell setzen.
Wenn du die richtigen Werte hast, würde ich diese dann auch in der /etc/security/limits.conf eintragen.
Damit das ganze wirksam wird, musst du /etc/pam.d/su editieren.
Dort steht ganz unten ein kommentar dazu.
Das ist die nun die Standardmethode , gegenüber der früher verwendeten alten /etc/limits.conf
Könnte es sein, dass bei dir noch das alte System aktiviert ist?

Ist alles ein bissel versteckt und man ulimit liefert auch nur die C-funktion.
Aber in der man bash wirst du fündig.

Gruß Wolfgang

MrFenix
05.08.2005, 15:43
Hast du nach dem Neustart mal das Dateisystem überprüfen lassen? Vielleicht ist irgendwas beim Reboot draufgegangen.