[Linux] Max open files.

Pagina: 1
Acties:

  • jep
  • Registratie: November 2000
  • Laatst online: 17-05 22:43
Mogge,

Ik heb nogal een vervelend probleem B) . Too many open files, roepen apache, mysql, en linux zo nu en dan. Ik heb 'm op 't maximum staan (iets van 50 000), maar da's niet genoeg. Stel dat ik nog meer nodig heb, welke truukjes kan ik daar voor uithalen? Het moet toch kunnen dat 't iets meer wordt. Ik gebruik in apache bij elke virtualhost 2 logfiles (access en error), en nogal veel virtualhosts.

Iemand een slimme oplossing? :). Of ben ik té heavy user ;).

  • Wilke
  • Registratie: December 2000
  • Laatst online: 22:37
Gozert....waar ben je mee bezig dan :?

Volgens mij is het maximum aantal bestanden dat tegelijk open kan een variabele in een van de header-files van de kernel (welke precies weet ik zo niet, helaas) - bedoel je dat je die al hebt aangepast?

Zo ja, dan denk ik dat je dingen aan het doen bent die Linux niet echt trekt ofzo - 50.000 files tegelijk open, wat *doe* je?

  • jep
  • Registratie: November 2000
  • Laatst online: 17-05 22:43
250 eggdrops (+ logs)
150 ircd's (+logs)
200 bouncers (gewone log en error log)
500 virtualhosts (elk 2 logs, en dat een paar keer als hij bezocht wordt)
mysql, postfix, etc >:)

Ja, ik kan 't beter verdelen over meerde machines, en dat doe ik ook. Maar 't punt was of er nu iets aan te doen was. :)

Ik heb in /proc/ die max_open_files veranderd.

En tja, al die processen (rond de 800) hebben allemaal ook libs nodig, die als open files te zien zijn.

Verwijderd

sic

op wat voor hardware draait dit ?!?!?!?

je kunt in /etc/security/limits.conf je pam enforced limits instellen. Ook de max open files. Al is het beter om dit op een tig aantal hosts te zetten ...

  • jep
  • Registratie: November 2000
  • Laatst online: 17-05 22:43
Verwijderd schreef op 19 oktober 2002 @ 23:25:
sic

op wat voor hardware draait dit ?!?!?!?
Normaal gesproken verdeeld, maar vandaag heeft wat hardware 't begeven. Moet ik dus nu even zo oplossen. :) Hij trekt het overigens nog prima. (Loadje van 2/3)
je kunt in /etc/security/limits.conf je pam enforced limits instellen. Ook de max open files. Al is het beter om dit op een tig aantal hosts te zetten ...
Dan denk ik inderdaad dat ik aan de max zit. Even apache errorlogs uit dan maar.

En toch valt 't me een beetje tegen, als ik nou een 16 processor enterprise-doos heb, dan moet zoiets toch ook kunnen?

Verwijderd

kun je niet alle programma's naar 1 bestand laten loggen.
dan als je de logs wil checken gewoon die log pakken.
(of is dat niet mogelijk, ben nooit zo'n ster geweest in restricties en tegelijk files opeenen en schrjven enzo)

  • jep
  • Registratie: November 2000
  • Laatst online: 17-05 22:43
Verwijderd schreef op 19 oktober 2002 @ 23:29:
kun je niet alle programma's naar 1 bestand laten loggen.
Dat heb ik al zover mogelijk doorgevoerd. Hielp een beetje, maar in drukke tijden niet genoeg.
dan als je de logs wil checken gewoon die log pakken.
(of is dat niet mogelijk, ben nooit zo'n ster geweest in restricties en tegelijk files opeenen en schrjven enzo)
K. Ik los 't dan wel met wat ranzige workarounds op, maar dan vraag ik me nog steeds af hoe dit in grote omgevingen gaat. :) écht groot dus. :)

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 17-05 14:06

deadinspace

The what goes where now?

Hmm, als ik "echo 1000000 > /proc/sys/fs/file-max" doe, dan wordt dat gewoon geaccepteerd. Ik weet niet of het dan ook werkt, maar het lijkt me wat raar dat Linux beperkt zou zijn tot 50,000 open files.

Welke kernel draai je eigenlijk (en dan voornamelijk 2.2 of 2.4)?

Wilke: vergeet niet dat open devices, sockets, pipes, libs en weetikwat allemaal filedescriptors kosten.

  • jep
  • Registratie: November 2000
  • Laatst online: 17-05 22:43
Bij mij accepteerd hij 't ook wel, maar Linux schijnt een harde limiet te hebben (althans, daar lees ik steeds over)..

2.4.18 kerneltje :).

  • Wilke
  • Registratie: December 2000
  • Laatst online: 22:37
Hmmmm..ik heb hier geen ervaring mee, maar kun je hier misschien nog iets mee uitrichten? Volgens mij is dat nl. die harde limiet waar je het over hebt (en een beetje meer uitleg over hoe dat gebeuren werkt in Linux).

Ik zie bv. wel in /usr/src/include/linux/fs.h die hard-limits staan (om en nabij regel 40)...zou het helpen die te vergroten, of.... ?

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 17-05 14:06

deadinspace

The what goes where now?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[root@soyuz marcelm]# uname -a
Linux soyuz 2.4.19-soyuz #1 wo aug 28 22:19:47 CEST 2002 i686 Pentium III (Coppermine) GenuineIntel GNU/Linux
[root@soyuz marcelm]# cat files.c 
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>



int main( int argc, char **argv )
{
        int fd, i;

        for( i = 0; ; i++)
        {
                fd = open( "/dev/null", O_RDWR );
                if( fd == -1 )
                {
                        printf( "Successfully opened %i files.\nError: %s\n",
                                        i, strerror( errno ) );
                        exit( 0 );              
                }
        }
}
[root@soyuz marcelm]# cat /proc/sys/fs/file-max
8192
[root@soyuz marcelm]# ulimit -n
1024
[root@soyuz marcelm]# ./files
Successfully opened 1021 files.
Error: Too many open files
[root@soyuz marcelm]# ulimit -n 2048
[root@soyuz marcelm]# ./files
Successfully opened 2045 files.
Error: Too many open files
[root@soyuz marcelm]# ulimit -n 1000000
[root@soyuz marcelm]# ./files
Successfully opened 6649 files.
Error: Too many open files in system
[root@soyuz marcelm]# echo 1000000 > /proc/sys/fs/file-max
[root@soyuz marcelm]# ./files
Successfully opened 998467 files.
Error: Too many open files in system
[root@soyuz marcelm]#

Probeer eens wat te frotten met het maximum aantal files in /etc/security/limits.conf...
Pagina: 1