ขีด จำกัด การเปิดไฟล์ไม่สามารถทำงานได้เหมือนใน OSX Yosemite [ซ้ำ]


22

ฉันเพิ่งอัปเดต Mac OS X เป็น Yosemite และตอนนี้บางแอปพลิเคชันไม่ทำงาน (IBM DB2) ฉันรู้ว่าฉันต้องตั้งค่า Open Files เป็น 65000 อย่างไรก็ตามคำสั่งไม่ทำงาน

Andress-MBP:~ root# ulimit -n 12288
Andress-MBP:~ root# ulimit -n 12289
-sh: ulimit: open files: cannot modify limit: Invalid argument

เหตุใดสิ่งนี้จึงเกิดขึ้นและฉันจะแก้ไขปัญหาได้อย่างไร

คำตอบ:


25

ดูเหมือนว่ามีวิธีการที่แตกต่างกันอย่างสิ้นเชิงสำหรับการเปลี่ยนการ จำกัด ไฟล์เปิดสำหรับ OS X แต่ละรุ่น!

สำหรับ OS X Sierra (10.12.X) คุณต้อง:

  1. ในการ/Library/LaunchDaemonsสร้างชื่อไฟล์limit.maxfiles.plistและวางต่อไปนี้ใน (อย่าลังเลที่จะเปลี่ยนตัวเลขสองตัวซึ่งเป็นขีด จำกัด ซอฟต์และฮาร์ดตามลำดับ):

    <?xml version="1.0" encoding="UTF-8"?>  
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"  
              "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">  
        <dict>
          <key>Label</key>
          <string>limit.maxfiles</string>
          <key>ProgramArguments</key>
          <array>
            <string>launchctl</string>
            <string>limit</string>
            <string>maxfiles</string>
            <string>64000</string>
            <string>524288</string>
          </array>
          <key>RunAtLoad</key>
          <true/>
          <key>ServiceIPC</key>
          <false/>
        </dict>
      </plist> 
    
  2. เปลี่ยนเจ้าของไฟล์ใหม่ของคุณ:

    sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
    
  3. โหลดการตั้งค่าใหม่เหล่านี้:

    sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
    
  4. สุดท้ายตรวจสอบว่าขีด จำกัด นั้นถูกต้อง:

    launchctl limit maxfiles
    

7
รอคอยที่จะได้คำตอบใหม่สำหรับ macOS 10.13! :)
NSTJ

1
กระบวนการไม่ทำงานสำหรับฉันจนกว่าฉันจะรีสตาร์ท ขอบคุณ! มันช่วยได้มากจริงๆ
2773086

สรุปสาระสำคัญนี้ยังกล่าวว่าการปรับเปลี่ยนไฟล์เหล่านี้เป็นวิธีการอัปเดตขีด จำกัด ของไฟล์ที่เปิดนี้สำหรับ Sierra gist.github.com/tombigel/d503800a282fcadbee14b537735d202c
Devin G Rhode

1
เริ่มต้นใหม่เป็นสิ่งจำเป็นสำหรับข้อ จำกัด ในการทำงาน (แม้ว่าขั้นตอนที่ 4 ไม่แสดงค่าที่ปรับปรุง)
trinth

21

ฉันเห็นคุณถามคำถามนี้ทั่ว

มีขีด จำกัด เคอร์เนลที่คุณต้องจัดการคือ kern.maxfiles ซึ่งเป็นขีด จำกัด เคอร์เนลและไม่สามารถเกินได้เมื่อตั้งค่า ulimit

ดูหน้าบล็อก Krypted ไฟล์สูงสุดใน Mac OS Xสำหรับคำอธิบายเกี่ยวกับวิธีจัดการ kern.maxifiles โดยใช้ sysctl

ฉันยังไม่ได้โหลดโยเซมิตีบน Mac ของฉัน การsysctl -w kern.maxfiles=65000ทำงานกับ Mavericks ซึ่งมีค่า kern.maxfiles = 12288 เหมือนกันตามค่าเริ่มต้น

ฉันตรวจสอบ VM OS X 10.6.8 ของฉันแล้วและมีข้อ จำกัด เดียวกันซึ่งทำให้เกิดคำถามว่าก่อนหน้านี้ทำงานอย่างไรก่อนเวอร์ชัน OS X ของคุณ

มีการแบ่งปันสไลด์ ( DB2 สำหรับ Mac OS X การติดตั้งและตั้งค่า DB2 สำหรับ Mac OS X ) แสดงข้อ จำกัด ที่แนะนำสำหรับการใช้ DB2 ดูที่เพิ่มพารามิเตอร์ระบบหน้า 7

เพิ่มพารามิเตอร์ของระบบ

เปิด /etc/sysctl.conf (หรือสร้างหากยังไม่มีอยู่) และใส่การตั้งค่าต่อไปนี้ การตั้งค่าเหล่านี้เพิ่มการตั้งค่าบางอย่างสำหรับหน่วยความจำที่ใช้ร่วมกันและข้อ จำกัด ผู้ใช้ที่ DB2 ต้องการเพื่อทำงานบน Mac

เพิ่มคำสั่งต่อไปนี้ลงใน /etc/sysctl.conf
kern.sysv.shmmax = 1073741824
kern.sysv.shmmin = 1
kern.sysv.shmmni = 4096
kern.sysv.shmseg = 32
kern.sysv.shmall = 1179648
kern.maxfilesperproc = 67955
kern.maxfiles = 65536

ดูเหมือนว่า/etc/sysctl.confไฟล์ของคุณจะหายไปเมื่อคุณอัพเกรด


จริงๆแล้วฉันติดตั้ง DB2 มานานแล้วและใช้งานได้ จากนั้นฉันอัปเดตเป็นผู้ไม่ฝักใฝ่ฝ่ายใดเมื่อปีที่แล้วโดยไม่มีปัญหาใด ๆ และในวันนี้ฉันได้อัปเดตเป็น Yosemite แล้วปัญหานี้จะปรากฏขึ้น ฉันไม่สามารถเริ่ม DB2 ที่ติดตั้งไว้แล้ว
AngocA

อีกอย่างคือ sysctl.conf ของฉันเหมือนไฟล์ที่คุณโพสต์ ฉันสร้างครั้งแรกที่ฉันติดตั้ง DB2 (หนึ่งปีที่ผ่านมา) แต่ฉันไม่ได้สัมผัสมันสำหรับการโยกย้าย
AngocA

ปัญหาคือพื้นที่ว่างบางส่วนในไฟล์นั้น: ibm.com/developerworks/community/forums/html/ …
AngocA

1
ช่องว่างต่อท้ายใครจะมีความคิด Apple ควรมีโปรแกรมเมอร์ที่ดีที่สุดในโลก
user187561

@ user187561 sysctl(8)มาจาก BSD
Drew Stephens

12

ใน Mac OS 10.10 ดูเหมือนว่าการตั้งค่า ulimit ต้องไม่เกินค่า จำกัด ของ Launchctl

ดังนั้นก่อนอื่นคุณควรรันlaunchctl จำกัด maxfilesในเทอร์มินัลเพื่อรับการตั้งค่าปัจจุบัน:

launchctl limit maxfiles
maxfiles    256            unlimited 

ในกรณีของฉันขีด จำกัด ซอฟต์คือ 256 ขีด จำกัด ฮาร์ดไม่ จำกัด และถ้าฉันต้องการตั้งค่า soft limit เป็น 512:

sudo launchctl limit maxfiles 512 unlimited

สามารถดูรายละเอียดการใช้ launchctl สำหรับการ จำกัด การตั้งค่าได้ที่นี่: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/launchctl.1.html


'launchctl limit maxfiles 512 unlimited ไม่ จำกัด ' ปรากฏขึ้นเพื่อตั้งค่า จำกัด (soft, hard) ของฉันเป็น (512,10240) บน Yosemite 10.10.5 ใน 2015-09-30
Dave X

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