Inspectați daemonul care rulează înainte de a avea încredere în ulimit -n al shell-ului de autentificare. Pentru o instalare care folosește squid.service, începeți cu:

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

Citiți /proc/PID/limits folosind ID-ul real al procesului. Într-un deployment cu mai multe procese, verificați și workerul relevant. O valoare salvată în configurație nu dovedește că acest proces a moștenit-o.

ControlDomeniu
Shell ulimit și PAM limits.confDescendenții shell-ului sau sesiunile care folosesc efectiv setarea PAM
systemd LimitNOFILE=Procese pornite sub politica de resurse a acelui serviciu
Squid max_filedescriptors, unde este acceptatLimita aplicației în cadrul constrângerilor sistemului de operare

Un serviciu de sistem nu preia modificările PAM doar pentru că un administrator a schimbat fișierul. Folosiți un drop-in specific serviciului atunci când modificarea limitei systemd este potrivită. Squid documentează că max_filedescriptors necesită repornire pentru a se schimba; dacă este lăsat nesetat, moștenește limita soft a sistemului de operare.

Dimensionați limita pentru descriptori, nu pentru utilizatori. Clienții pot ține mai multe socketuri, iar conexiunile de ieșire, jurnalele și conductele auxiliare consumă și ele descriptori. Creșterea limitei permite un consum mai mare fără a rezerva imediat o cantitate fixă de RAM pentru fiecare descriptor posibil. Nici o veche estimare de memorie pe socket, nici 65,535 nu sunt o cerință universală de capacitate sau un plafon Linux.

După modificarea serviciului, comparați limitele noului proces cu valorile intenționate. Dacă apar eșecuri mult sub ele, investigați resursa care se epuizează efectiv.

Articole similare