Iskanje prave meje datotečnih deskriptorjev pri Squidu
Preberite meje procesa delujočega proxyja, preden spremenite nastavitve PAM ali kopirate fiksno vrednost nofile iz recepta za zmogljivost.
Preglejte delujočega demona, preden zaupate ulimit -n prijavne lupine. Za namestitev, ki uporablja squid.service, začnite z:
systemctl show squid.service -p MainPID -p LimitNOFILE
systemctl cat squid.service
Preberite /proc/PID/limits z dejanskim ID procesa. Pri namestitvi z več procesi preverite tudi ustreznega delavca. Vrednost, shranjena v konfiguraciji, ni dokaz, da jo je ta proces podedoval.
| Nadzor | Obseg |
|---|---|
Lupina ulimit in PAM limits.conf | Potomci lupine ali seje, ki dejansko uporabljajo nastavitev PAM |
systemd LimitNOFILE= | Procesi, zagnani v okviru politike virov te storitve |
Squid max_filedescriptors, kjer je podprto | Omejitev aplikacije v okviru omejitev operacijskega sistema |
Sistemska storitev ne prevzame sprememb PAM samo zato, ker je skrbnik spremenil datoteko. Uporabite drop-in, specifičen za storitev, ko je spreminjanje njene meje systemd primerno. Squid dokumentira, da max_filedescriptors za spremembo zahteva ponovni zagon; če ostane nenastavljen, se podeduje mehka meja OS.
Mejo določite po deskriptorjih, ne po uporabnikih. Odjemalci lahko držijo več vtičnic, tudi odhodne povezave, dnevniki in pomožne cevi porabljajo deskriptorje. Dvignjena meja omogoča večjo porabo, ne da bi takoj rezervirali fiksno količino RAM za vsak možni deskriptor. Niti stara ocena pomnilnika na vtičnico niti 65,535 nista univerzalna zahteva za zmogljivost ali zgornja meja Linuxa.
Po spremembi storitve primerjajte meje novega procesa z načrtovanimi vrednostmi. Če se napake pojavljajo precej pod njimi, raziščite vir, ki se dejansko izčrpava.