ตรวจสอบเดมอนที่ทำงานอยู่ก่อนเชื่อ ulimit -n ของเชลล์ล็อกอิน สำหรับการติดตั้งที่ใช้ squid.service ให้เริ่มด้วย:

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

อ่าน /proc/PID/limits โดยใช้ ID โปรเซสจริง ในการติดตั้งแบบหลายโปรเซส ให้ตรวจสอบเวิร์กเกอร์ที่เกี่ยวข้องด้วย ค่าที่บันทึกในการกำหนดค่าไม่ใช่หลักฐานว่าโปรเซสนี้สืบทอดค่านั้น

การควบคุมขอบเขต
เชลล์ ulimit และ PAM limits.confลูกหลานของเชลล์หรือเซสชันที่ใช้การตั้งค่า PAM จริง
systemd LimitNOFILE=โปรเซสที่เริ่มภายใต้นโยบายทรัพยากรของบริการนั้น
Squid max_filedescriptors ในกรณีที่รองรับขีดจำกัดแอปพลิเคชันภายในข้อจำกัดของระบบปฏิบัติการ

บริการของระบบไม่รับการแก้ไข PAM เพียงเพราะผู้ดูแลระบบเปลี่ยนไฟล์ ใช้ drop-in เฉพาะบริการเมื่อการเปลี่ยนขีดจำกัด systemd ของบริการนั้นเหมาะสม Squid ระบุว่า max_filedescriptors ต้องรีสตาร์ตเพื่อเปลี่ยนแปลง หากปล่อยไว้ไม่ตั้งค่า จะสืบทอดขีดจำกัดแบบซอฟต์ของ OS

กำหนดขีดจำกัดตามตัวอธิบายไฟล์ ไม่ใช่ตามผู้ใช้ ไคลเอนต์สามารถถือซ็อกเก็ตได้หลายตัว และการเชื่อมต่อขาออก บันทึก และไปป์ช่วยเหลือก็ใช้ตัวอธิบายไฟล์เช่นกัน การเพิ่มขีดจำกัดช่วยให้ใช้ได้มากขึ้นโดยไม่ต้องสำรอง RAM จำนวนคงที่ทันทีสำหรับทุกตัวอธิบายไฟล์ที่เป็นไปได้ ทั้งการประมาณหน่วยความจำต่อซ็อกเก็ตแบบเก่าและ 65,535 ไม่ใช่ข้อกำหนดความจุสากลหรือเพดานของ Linux

หลังเปลี่ยนบริการ ให้เปรียบเทียบขีดจำกัดของโปรเซสใหม่กับค่าที่ตั้งใจ หากเกิดความล้มเหลวต่ำกว่านั้นมาก ให้ตรวจสอบทรัพยากรที่หมดจริง

บทความที่เกี่ยวข้อง