วิธีเพิ่มขีด จำกัด สูงสุดของการเปิดไฟล์บน Ubuntu 18.04?


16

ฉันทำงานulimit -n 65536เพิ่มบรรทัดต่อไปนี้ใน/etc/security/limits.conf:

*    soft nofile 65536
*    hard nofile 65536
alix soft nofile 65536
alix hard nofile 65536
root soft nofile 65536
root hard nofile 65536

และเพิ่มsession required pam_limits.soไปยังทั้งสอง:

  • /etc/pam.d/common-session
  • /etc/pam.d/common-session-noninteractive

และเพื่อfs.file-max = 65536/etc/sysctl.d/60-file-max.conf

แต่ถึงกระนั้นหลังจากรีสตาร์ทและทำงานulimit -nในเซสชั่นของฉันฉันได้รับ 4096 (คือ 1024 ก่อน)

ฉันพลาดอะไรไป

คำตอบ:


12

จากคู่มือ:

 -n     The maximum number of open file descriptors (most
        systems do not allow this value to be set)

systemd มีตัวเลือกสำหรับสิ่งนี้:

$ more /etc/systemd/system.conf | grep NOFILE
#DefaultLimitNOFILE=

แต่นี่เป็นเพียงสำหรับการตั้งค่าผู้ใช้แบบกราฟิก ลบ#และคุณสามารถตั้งค่าเป็น 65536

ความคิดเห็นจาก Daniel Fernández :

DefaultLimitNOFILE=65536 

อาจจำเป็นต้องใช้ใน

/etc/systemd/user.conf 

1
ลืมพูดถึงฉันก็ทำเช่นนั้น
Alix Axel

1
@AlixAxel: คำตอบนี้ทำงานให้ฉันนอกเหนือไปจาก* - nofile 16384(ฉันเป็นเพียงความพยายามที่ 16384) /etc/security/limits.confใน
Doug Smythies

65k เป็นข้อสันนิษฐานและคาดว่าจะมีข้อ จำกัด ที่เข้ารหัสยากที่ด้านบนของสิ่งที่ได้รับอนุญาต คุณอาจต้องการเริ่มต้นให้ต่ำลงตามที่ Doug ระบุไว้)
Rinzwind

คุณหมายถึงอะไร "แต่นี่เป็นเพียงการตั้งค่าผู้ใช้แบบกราฟิก"
Sinan

1
DefaultLimitNOFILE=65536อาจจำเป็นต้องตั้งค่าหมายเหตุด้วย/etc/systemd/user.conf
Daniel Fernández

2

Ubuntu 18.04 ทีละขั้นตอน

หวังว่าทั้งหมดนี้ช่วยได้ค่อนข้างนาน แต่ใช้งานได้ (มีหลักฐาน)

ฉันเจอชุดข้อความนี้ขณะติดตั้ง MongoDb บน Ubuntu 18.04

https://posidev.com/blog/2009/06/04/set-ulimit-parameters-on-ubuntu/

อย่างที่คุณเห็นมันค่อนข้างเก่า แต่มันก็ใช้ได้กับฉัน

นี่คือสิ่งที่ฉันทำ

  1. การตั้งค่าที่แนะนำ MongoDb ( https://docs.mongodb.com/manual/reference/ulimit/#review-and-set-resource-limits )

    • -f (ขนาดไฟล์): ไม่ จำกัด
    • -t (เวลา cpu): ไม่ จำกัด
    • -v (หน่วยความจำเสมือน): ไม่ จำกัด [1]
    • -l (ขนาดล็อคในหน่วยความจำ): ไม่ จำกัด
    • -n (เปิดไฟล์): 64000
    • -m (ขนาดหน่วยความจำ): ไม่ จำกัด [1] [2]
    • -u (กระบวนการ / เธรด): 64000
  2. ตรวจสอบข้อ จำกัด ปัจจุบันของฉัน

ubuntu @ isdb-stage: ~ $ ulimit -a
ขนาดไฟล์หลัก (บล็อก, -c) 0
ขนาดของข้อมูล seg (kbytes, -d) ไม่ จำกัด
ลำดับความสำคัญของการกำหนดเวลา (-e) 0
ขนาดไฟล์ (บล็อก, -f) ไม่ จำกัด
สัญญาณที่รอดำเนินการ (-i) 7873
หน่วยความจำสูงสุดถูกล็อค (kbytes, -l) 16384
ขนาดหน่วยความจำสูงสุด (kbytes, -m) ไม่ จำกัด
เปิดไฟล์ (-n) 1024
ขนาดท่อ (512 ไบต์, -p) 8
POSIX คิวข้อความ (ไบต์, -q) 819200
ลำดับความสำคัญตามเวลาจริง (-r) 0
ขนาดสแต็ก (kbytes, -s) 8192
เวลา cpu (วินาที, -t) ไม่ จำกัด
กระบวนการผู้ใช้สูงสุด (-u) 7873
หน่วยความจำเสมือน (kbytes, -v) ไม่ จำกัด
ล็อคไฟล์ (-x) ไม่ จำกัด
  1. จดบันทึกสิ่งที่ต้องเปลี่ยน

    • ขนาดล็อคในหน่วยความจำจะต้องตั้งค่าไม่ จำกัด
    • เปิดไฟล์ต้องตั้งค่าเป็น 64000
    • กระบวนการ / เธรด * , จำเป็นต้องตั้งค่าเป็น 64000
  2. อูบุนตูพูดว่าอย่างไรเกี่ยวกับวิธีเปลี่ยนขีด จำกัด เหล่านี้?

$ man limit.conf

ชื่อ
   limit.conf - ไฟล์กำหนดค่าสำหรับโมดูล pam_limits

รายละเอียด
   โมดูล pam_limits.so ใช้การ จำกัด ulimit ลำดับความสำคัญดีและจำนวนของเซสชันการล็อกอินพร้อมกันเพื่อ จำกัด เซสชันการล็อกอินของผู้ใช้ คำอธิบายของไวยากรณ์ไฟล์การกำหนดค่านี้ใช้กับ

       ไฟล์ /etc/security/limits.conf และไฟล์ * .conf ในไฟล์ 
       ไดเร็กทอรี /etc/security/limits.d
  1. ดูเหมือนจะค่อนข้างชัดเจนพอสมควรแก้ไขไฟล์ /etc/security/limits.conf ตกลงช่วยคิดออก ....

นี่คือจุดเริ่มต้นของไฟล์และดูว่ามันมีคำแนะนำภายในแน่นอนจำไว้ว่านี่เป็นโอเพนซอร์ซที่เขียนโดยคนดี! :)

    vi /etc/security/limits.conf

    # /etc/security/limits.conf 
    #Each line อธิบายขีด จำกัด ของผู้ใช้ในรูปแบบ:                                                                   
    #                                                                                
    #Where:                                                               
    # เป็นไปได้:
    # - ชื่อผู้ใช้

(ดูไฟล์ด้วยตัวคุณเองหากคุณต้องการรายละเอียดเพิ่มเติม)
  1. ในที่สุดก็ทำการเปลี่ยนแปลง เป็น MongoDb ทำงานเป็นกลุ่ม mongodb และผู้ใช้มันจะเป็นความคิดที่ดีในการเพิ่มผู้ใช้ที่ จำกัด เท่านั้น ฉันเห็น '*' ใช้ที่นี่และที่นั่นสำหรับฉันนั่นเป็นความเสี่ยงด้านความปลอดภัย จะให้ข้อ จำกัด เหล่านี้ทั้งหมดบนเซิร์ฟเวอร์ซึ่งสามารถใช้เพื่อขยายเซิร์ฟเวอร์ของคุณให้สูงสุด ดังนั้นช่วยให้พวกเขาสำหรับผู้ใช้ mongodb เท่านั้น

นี่คือการเปลี่ยนแปลงของฉัน: -

mongodb soft memlock ไม่ จำกัด
mongodb ฮาร์ด memlock ไม่ จำกัด
อ่อนนุ่มอ่อนหวาน 64000
mongodb ยาก nofile 64000
Mongodb soft nproc 64000
Mongodb ฮาร์ด nproc 64000
  1. ในที่สุดสุดท้ายจำไว้ว่าในรายการ Man จำกัด.conf

    limit.conf - ไฟล์กำหนดค่าสำหรับโมดูล pam_limits

    ดีกว่าตรวจสอบให้แน่ใจว่าโหลดโมดูล pam_limits เพื่อให้ข้อ จำกัด ทั้งหมดนี้ใช้งานได้ เมื่อต้องการทำสิ่งนี้ให้คุณแก้ไข /etc/pam.d/common-session ของหลักสูตรนี้ยังอยู่ในหน้าคน

sudo vi /etc/pam.d/common-session

# เพิ่มรายการนี้เพื่อให้แน่ใจว่ามีการโหลด pam_limits.so
เซสชันที่ต้องการ pam_limits.so

การรีบูตจะแสดงข้อ จำกัด (สำหรับผู้ใช้ mongodb) หากคุณใช้พวกเขาโดยใช้ '*' แทนคุณสามารถตรวจสอบได้โดยไม่ต้องเปลี่ยนไปใช้ผู้ใช้ mongodb เพียงรันคำสั่งนี้

$ ulimit -a

ขนาดไฟล์หลัก (บล็อก, -c) 0
ขนาดของข้อมูล seg (kbytes, -d) ไม่ จำกัด
ลำดับความสำคัญของการกำหนดเวลา (-e) 0
ขนาดไฟล์ (บล็อก, -f) ไม่ จำกัด
สัญญาณที่รอดำเนินการ (-i) 7873
หน่วยความจำล็อคสูงสุด (kbytes, -l) ไม่ จำกัด
ขนาดหน่วยความจำสูงสุด (kbytes, -m) ไม่ จำกัด
เปิดไฟล์ (-n) 64000
ขนาดท่อ (512 ไบต์, -p) 8
POSIX คิวข้อความ (ไบต์, -q) 819200
ลำดับความสำคัญตามเวลาจริง (-r) 0
ขนาดสแต็ก (kbytes, -s) 8192
เวลา cpu (วินาที, -t) ไม่ จำกัด
กระบวนการผู้ใช้สูงสุด (-u) 64000
หน่วยความจำเสมือน (kbytes, -v) ไม่ จำกัด
ล็อคไฟล์ (-x) ไม่ จำกัด

อย่างที่คุณเห็น lubbly jubbly ตั้งค่าขีด จำกัด ที่เราต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.