การค้นหาขีดจำกัดตัวอธิบายไฟล์ที่แท้จริงของ Squid
อ่านขีดจำกัดโปรเซสของพร็อกซีที่ทำงานอยู่ก่อนเปลี่ยนการตั้งค่า PAM หรือคัดลอกค่า nofile คงที่จากสูตรความจุ
ตรวจสอบเดมอนที่ทำงานอยู่ก่อนเชื่อ 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
หลังเปลี่ยนบริการ ให้เปรียบเทียบขีดจำกัดของโปรเซสใหม่กับค่าที่ตั้งใจ หากเกิดความล้มเหลวต่ำกว่านั้นมาก ให้ตรวจสอบทรัพยากรที่หมดจริง