สารละลาย
เดอะ เปิดไฟล์
จำกัด เป็นไปได้ เพิ่มขึ้น.
⦠ขีดจำกัดฮาร์ดแวร์ต่อกระบวนการถูกตั้งค่าเป็น 1048576 โดยค่าเริ่มต้น แต่สามารถเป็น
เปลี่ยนโดยใช้ "fs.nr_open" sysctl จาก: คู่มือการจัดการ HAProxy | 5. ข้อ จำกัด ของตัวอธิบายไฟล์
ฉันสะดุดกับ ทรัพยากรที่มีประโยชน์ เกี่ยวกับวิธีเพิ่ม fs.nr_open
. นี่คือสิ่งที่ฉันทำ (บนเครื่องโฮสต์ของฉัน):
# 0. ssh ลงในอินสแตนซ์คลาวด์ของฉัน
#1. เปลี่ยนเป็นรูท
ซูโด ซู -
#2. เพิ่มขีดจำกัด
sysctl -w fs.nr_open=2010000
# 3 บันทึกการเปลี่ยนแปลงและออก
sysctl -p
ทางออก
# 4 ตอนนี้คุณกลับมาอยู่ในเชลล์ผู้ใช้แล้ว คุณต้องเข้าสู่ระบบใหม่
# จากเชลล์นี้ด้วยเพื่อให้การเปลี่ยนแปลงมีผล
ทางออก
โปรดทราบว่าการเปลี่ยนแปลงที่เกิดขึ้นจะไม่คงอยู่หลังจากรีบูต หากมีใครทราบวิธีการดังกล่าว โปรดแจ้งให้เราทราบและฉันจะแก้ไขคำตอบของฉัน
ฉันต้องบอก Docker ด้วยว่าสามารถเปิดไฟล์มากกว่า 1,048,576 ไฟล์ในคอนเทนเนอร์ได้ ฉันใช้ไฟล์ Docker Compose เพื่อกำหนดบริการของฉัน ฉันเพียงแค่เพิ่มตัวอย่างต่อไปนี้ในของฉัน นักเทียบท่า-compose.yml
:
บริการ:
พร็อกซี:
ภาพ: haproxy
#ตัวอย่างข้อมูลเริ่มต้น
ขีด จำกัด :
ไม่มีไฟล์:
อ่อน: 2005000
ยาก: 2005000
#ทิ้งท้าย
# ...
# ...
สุดท้าย แต่ไม่ท้ายสุด ตรวจสอบให้แน่ใจว่าอินสแตนซ์โฮสต์มี RAM อย่างน้อย 2GB มิฉะนั้นหน่วยความจำของคุณจะหมดเมื่อคุณพยายามเรียกใช้พร็อกซี หากคุณต้องการจัดการคำขอ 1 ล้านรายการด้วยพร็อกซีของคุณจริงๆ คุณจะต้องใช้หน่วยความจำมากขึ้น ซึ่งมีขนาดระหว่าง 20 ถึง 30 GB คุณสามารถทดสอบด้วยตัวเองได้ตามสบาย หากคุณรู้วิธีคำนวณขีดจำกัด อย่าลังเลที่จะแก้ไขคำตอบของฉันหรือโพสต์ความคิดเห็นด้านล่าง!
เหตุผลเกี่ยวกับจำนวนไฟล์ที่เปิด
หากเราต้องการไฟล์เปิด 2,000,029 ไฟล์สำหรับการเชื่อมต่อ 1 ล้านครั้ง ให้:
- กำหนดขีดจำกัดคอนเทนเนอร์พร็อกซีให้สูงกว่านั้นเล็กน้อย: 2,000,029 + 4971 = 2,005,000
- ตั้งค่าขีดจำกัดระบบปฏิบัติการโฮสต์ให้สูงกว่านั้นเล็กน้อย: 2,005,000 + 5000 = 2,010,000