Prüfen Sie den laufenden Daemon, bevor Sie dem ulimit -n der Login-Shell vertrauen. Bei einer Installation mit squid.service beginnen Sie mit:

systemctl show squid.service -p MainPID -p LimitNOFILE
systemctl cat squid.service

Lesen Sie /proc/PID/limits mit der tatsächlichen Prozess-ID. Bei einer Mehrprozess-Bereitstellung prüfen Sie auch den zuständigen Worker. Ein in der Konfiguration gespeicherter Wert beweist nicht, dass dieser Prozess ihn geerbt hat.

SteuerungGeltungsbereich
Shell ulimit und PAM limits.confNachfahren der Shell oder Sitzungen, die die PAM-Einstellung tatsächlich verwenden
systemd LimitNOFILE=Prozesse, die unter der Ressourcenrichtlinie dieses Dienstes gestartet wurden
Squid max_filedescriptors, sofern unterstütztAnwendungslimit innerhalb der Betriebssystemgrenzen

Ein Systemdienst übernimmt PAM-Änderungen nicht allein deshalb, weil ein Administrator die Datei geändert hat. Verwenden Sie ein dienstspezifisches Drop-in, wenn die Änderung seines systemd-Limits angebracht ist. Squid dokumentiert, dass max_filedescriptors zum Ändern einen Neustart erfordert; bleibt es ungesetzt, wird das weiche Limit des Betriebssystems geerbt.

Bemessen Sie das Limit an Deskriptoren statt an Benutzern. Clients können mehrere Sockets halten, und auch ausgehende Verbindungen, Protokolle und Hilfs-Pipes verbrauchen Deskriptoren. Ein höheres Limit erlaubt mehr Verbrauch, ohne sofort eine feste RAM-Menge pro möglichem Deskriptor zu reservieren. Weder eine alte Schätzung von Speicher pro Socket noch 65,535 sind eine allgemeine Kapazitätsanforderung oder eine Linux-Obergrenze.

Vergleichen Sie nach der Dienständerung die Limits des neuen Prozesses mit den beabsichtigten Werten. Treten Fehler weit darunter auf, untersuchen Sie die tatsächlich erschöpfte Ressource.

Ähnliche Artikel