[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Max open files



Am Donnerstag, 9. Februar 2017, 19:24:16 CET schrieb Stefan Weinzierl:
> On 09.02.2017 19:12, Christian Knoke wrote:
> [...]
> 
> > Das heisst jetzt prlimit. ulimit gibts bei mir nur noch als bash builtin.
> > 
> > type -a ulimit (gerad' gelernt)
> > which -a ulimit
> > man prlimit
> > 
> > prlimit --verbose -n
> > RESOURCE DESCRIPTION               SOFT  HARD UNITS
> > NOFILE   max number of open files 65536 65536
> 
> Ok, auch was neues gelernt. Aber wer setzt mir das Limit auf meiner
> Maschine so niedrig?

ulimit und die limits.conf funktionieren an sich (siehe unten!) immer noch. 
prlimit erlaubt es, die Limits auch für einen bereits laufenden Prozess 
nachträglich noch zu ändern.

Maximal 65536 offene Dateien ist Standard in Debian Jessie. Und deutlich höher 
als z.B. bei CentOS 7 mit ca. 1024 oder älteren Debian-Versionen mit, soweit 
ich mich erinnere, ebenfalls 1024. Das müsste sich aber weiterhin über die 
limits.conf erhöhen lassen. Allerdings…

… ignoriert systemd die Werte da offenbar, oder erlaubt es zumindest diese zu 
überschreiben. Laut

https://fredrikaverpil.github.io/2016/04/27/systemd-and-resource-limits/

ignoriert systemd die wohl komplett, was ich schon etwas arg heftig fände. 
(Mich aber andererseits auch nicht wirklich wundern würde.)

Service-Dateien in Debian aber offenbar bislang kaum Gebrauch von speziellen 
Limits machen:
merkaba:/proc/1> grep -ir LimitNOFILE /lib/systemd
/lib/systemd/system/libvirtd.service:#LimitNOFILE=2048
/lib/systemd/system/systemd-journald.service:LimitNOFILE=16384
/lib/systemd/system/systemd-logind.service:LimitNOFILE=16384
Übereinstimmungen in Binärdatei /lib/systemd/libsystemd-shared-232.so
Übereinstimmungen in Binärdatei /lib/systemd/systemd

Es gibt aber da offenbar auch Standard-Werte, und zwar in:

merkaba:/proc/1> grep -ir LimitNOFILE /etc/systemd
/etc/systemd/user.conf:#DefaultLimitNOFILE=
/etc/systemd/system.conf:#DefaultLimitNOFILE=

Inwiefern systemd etwas setzt, wenn weder global noch in der Service-Datei ein 
Wert setzt, ist mir anhand der Manpage systemd-system.conf nicht schlüssig.

Die Manpage von setrlimit schweigt sich zu Standard-Werte aus.

Woher das Limit von 65536 herkommt ist mir im Moment also auch nicht ganz 
schlüssig, aus /etc jedenfalls laut "grep -ir 65536 ." nicht. Inwiefern da 
systemd, die glibc oder der Kernel irgendeinen Standard-Wert setzen, ist mir 
nicht ganz klar.

Ich denke ich würde das Limit einfach sowohl in system.conf sowie user.conf 
als auch in limits.conf hochsetzen. An sich gibt es dann auch noch ein PAM-
Modul, um Prozess-Limits zu setzen, aber ich denke, das dieses eben die 
limits.conf auswertet.

Ciao,
-- 
Martin


Reply to: