შეამოწმეთ მომუშავე დემონი, სანამ დაეყრდნობით შესვლის გარსის 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-ის შეცვლას გადატვირთვა სჭირდება; დაუყენებელი დარჩენისას მემკვიდრეობით მიიღება OS-ის რბილი ლიმიტი.

განსაზღვრეთ ლიმიტი დესკრიპტორებისთვის და არა მომხმარებლებისთვის. კლიენტებს შეუძლიათ რამდენიმე სოკეტის შენახვა, ასევე გამავალი კავშირები, ჟურნალები და დამხმარე მილები დესკრიპტორებს მოიხმარენ. ლიმიტის გაზრდა მეტ მოხმარებას იძლევა იმის გარეშე, რომ დაუყოვნებლივ დაირეზერვოს ფიქსირებული RAM ყოველი შესაძლო დესკრიპტორისთვის. არც ძველი მეხსიერების შეფასება სოკეტზე და არც 65,535 არ არის უნივერსალური სიმძლავრის მოთხოვნა ან Linux-ის ჭერი.

სერვისის ცვლილების შემდეგ შეადარეთ ახალი პროცესის ლიმიტები განზრახულ მნიშვნელობებს. თუ ჩავარდნები ხდება მათზე მნიშვნელოვნად დაბლა, გამოიკვლიეთ რეალურად ამოწურული რესურსი.

დაკავშირებული სტატიები