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: