วางแผนงบซ็อกเก็ตพร็อกซีของ NGINX ก่อนเพิ่ม worker_connections
การเชื่อมต่อผ่านพร็อกซีมักใช้ทั้งซ็อกเก็ตฝั่งไคลเอนต์และฝั่ง upstream; แยกขีดจำกัดการเชื่อมต่อของ worker ออกจากขีดจำกัดไฟล์ดีสคริปเตอร์ของบริการ
การเชื่อมต่อผ่านพร็อกซีที่คงอยู่ยาวนานมักใช้สองซ็อกเก็ต คือของไคลเอนต์และของ upstream worker_connections นับทั้งสองฝั่ง ดังนั้นการคูณด้วย worker_processes จึงไม่ได้ให้คำมั่นเรื่องความจุแก่ผู้ใช้พร็อกซี
เมื่อการเชื่อมต่อล้มเหลว ให้ทำตามขีดจำกัดที่รายงาน:
| หลักฐาน | การตั้งค่าหรือสถานะโปรเซสที่ต้องตรวจ |
|---|---|
| worker_connections หมด | งบการเชื่อมต่อของ worker รวมถึงซ็อกเก็ต upstream |
| ข้อความของระบบปฏิบัติการ “ไฟล์เปิดมากเกินไป” | ขีดจำกัดไฟล์ดีสคริปเตอร์ที่โปรเซสบริการจริงสืบทอดมา |
ซ็อกเก็ตรอรับ ล็อก และไฟล์เปิดอื่น ๆ ก็ใช้ดีสคริปเตอร์เช่นกัน การใช้การเชื่อมต่อซ้ำและส่วนผสมของทราฟฟิกเปลี่ยนความสัมพันธ์ระหว่างผู้ใช้กับซ็อกเก็ต
worker_rlimit_nofile ปรับขีดจำกัดของ worker ภายใต้สิทธิ์ของสภาพแวดล้อม หน่วย systemd ตั้ง LimitNOFILE ได้ ส่วน ulimit ในเชลล์แบบโต้ตอบไม่เปลี่ยนบริการที่กำลังทำงาน
กำหนดขนาดขีดจำกัดตามภาระงาน และตรวจว่าใครใช้ขีดจำกัดเหล่านั้น ไคลเอนต์ที่ไม่คาดคิดหรือการเชื่อมต่อ upstream ที่ล้มเหลวซ้ำ ๆ อาจทำให้งบที่เคยเพียงพอหมดไป การเพิ่มจำนวนโปรเซสหรือขีดจำกัดหน่วยความจำไม่ได้แก้ปัญหาดีสคริปเตอร์ไม่พอ