Прегледайте работещия демон, преди да се доверите на ulimit -n на входната обвивка. За инсталация, използваща squid.service, започнете с:

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

Прочетете /proc/PID/limits с действителния идентификатор на процеса. При разгръщане с много процеси проверете и съответния работник. Стойност, записана в конфигурацията, не е доказателство, че този процес я е наследил.

КонтролОбхват
Обвивка ulimit и PAM limits.confНаследниците на обвивката или сесиите, които действително използват настройката на PAM
systemd LimitNOFILE=Процеси, стартирани под ресурсната политика на тази услуга
Squid max_filedescriptors, където се поддържаЛимит на приложението в рамките на ограниченията на операционната система

Системната услуга не възприема промените в PAM само защото администраторът е променил файла. Използвайте drop-in, специфичен за услугата, когато промяната на systemd лимита е подходяща. Squid документира, че max_filedescriptors изисква рестарт за промяна; ако е оставен незададен, наследява мекия лимит на ОС.

Оразмерете лимита по дескриптори, а не по потребители. Клиентите могат да държат няколко сокета, а изходящите връзки, журналите и помощните канали също консумират дескриптори. Повишаването на лимита позволява повече консумация, без веднага да се резервира фиксирано количество RAM за всеки възможен дескриптор. Нито старата оценка за памет на сокет, нито 65,535 не са универсално изискване за капацитет или таван на Linux.

След промяната на услугата сравнете лимитите на новия процес с предвидените стойности. Ако отказите се появяват много под тях, изследвайте ресурса, който действително се изчерпва.

Подобни статии