user prozess limit?
Jan-Benedict Glaw
jbglaw at lug-owl.de
Die Nov 13 21:48:44 CET 2001
On Tue, 2001-11-13 11:05:54 +0100, Rene Lange <Rene.Lange at t-systems.de>
wrote in message <20011113110554.A8534 at wve06124.eft.telekom.de>:
> moin..
>
> Wie kann denn sowas kommen:
>
> $ ps
> bash: fork: Resource temporarily unavailable
>
> als root:
>
> $ ps axu|grep ^user|wc -l
> 257
Aha. Du hast also 257 Prozesse unter dem user "user" am Laufen.
> Darauf läuft ein Webserver in 4 Instanzen (mit diesem username). Dieser
> Webserver (Netspappe iPlanet 4.2 SP9) kann laut error-log auch nicht mehr
> forken, wodurch er wegbricht ..
Naja, mal lesen in ./linux/kernel/fork.c. Ich nehme mal eine etwas
aktuellere Fassung, aber das sah schon immer so aus:
int do_fork(unsigned long clone_flags, unsigned long stack_start,
struct pt_regs *regs, unsigned long stack_size)
{
int retval;
[...]
retval = -EAGAIN;
if (atomic_read(&p->user->processes) >= p->rlim[RLIMIT_NPROC].rlim_cur)
goto bad_fork_free;
[...]
fork_out:
return retval;
[...]
bad_fork_free:
free_task_struct(p);
goto fork_out;
}
...oder in Kurz: Dieser User darf einfach nicht mehr als 256 Prozesse
erzeugen! "man getrlimit":
[...]
RLIMIT_NPROC /* max number of processes */
[...]
SEE ALSO
quotactl(2), ulimit(3)
[...]
Also gucken wir da nach ("man 3 ulimit"):
[...]
SEE ALSO
bash(1), getrlimit(2), setrlimit(2), sysconf(3)
[...]
Hmmm. bash? Mal schau'n... "man 1 bash" und dann mal nach ulimit suchen:
[...]
-u The maximum number of processes available to a single user
[...]
Aha. Mit "ulimit" kann man diese Limits von der bash aus setzen. ...und
das am Besten, bevor Du den Webserver startest. Andererseits - was ist
das für ein doofer Webserver, der 100e von fork()s absetzt?
MfG, JBG
--
Jan-Benedict Glaw . jbglaw at lug-owl.de . +49-172-7608481
http://lug-owl.de/~jbglaw/software/snapshot2cvs/
--
tlug Mailingliste
Archiv: http://www.tlug.de/archiv/
http://schwarz.thueday.de/mailman/listinfo/tlug_allgemein