too many files openเมื่อเรียกใช้โปรแกรมประยุกต์ของฉันบางครั้งผมได้รับข้อผิดพลาดเกี่ยวกับ
การเรียกใช้ulimit -aรายงานว่าขีด จำกัด คือ 1024 ฉันจะเพิ่มขีด จำกัด ที่สูงกว่า 1024 ได้อย่างไร
แก้ไข
ulimit -n 2048ผลลัพธ์ในข้อผิดพลาดการอนุญาต
too many files openเมื่อเรียกใช้โปรแกรมประยุกต์ของฉันบางครั้งผมได้รับข้อผิดพลาดเกี่ยวกับ
การเรียกใช้ulimit -aรายงานว่าขีด จำกัด คือ 1024 ฉันจะเพิ่มขีด จำกัด ที่สูงกว่า 1024 ได้อย่างไร
แก้ไข
ulimit -n 2048ผลลัพธ์ในข้อผิดพลาดการอนุญาต
คำตอบ:
ulimit -n 2048คุณอาจจะลองทำ สิ่งนี้จะรีเซ็ตขีด จำกัด สำหรับเชลล์ปัจจุบันของคุณเท่านั้นและหมายเลขที่คุณระบุต้องไม่เกินขีด จำกัด ฮาร์ด
ระบบปฏิบัติการแต่ละระบบมีการตั้งค่าขีด จำกัด ฮาร์ดไดรฟ์ต่างกันในไฟล์กำหนดค่า ตัวอย่างเช่นขีด จำกัด ไฟล์เปิดยากบน Solaris สามารถตั้งค่าได้เมื่อบูตจาก / etc / ระบบ
set rlim_fd_max = 166384
set rlim_fd_cur = 8192
บน OS X ต้องตั้งค่าข้อมูลเดียวกันนี้ใน /etc/sysctl.conf
kern.maxfilesperproc=166384
kern.maxfiles=8192
ภายใต้ Linux การตั้งค่าเหล่านี้มักจะอยู่ใน /etc/security/limits.conf
ข้อ จำกัด มีสองประเภท:
ผู้ใช้ใด ๆ สามารถตั้งค่าขีด จำกัด ซอฟต์ในขณะที่ข้อ จำกัด ฮาร์ดสามารถเปลี่ยนแปลงได้โดยเฉพาะราก ขีด จำกัด เป็นคุณสมบัติของกระบวนการ สิ่งเหล่านี้จะสืบทอดเมื่อกระบวนการลูกถูกสร้างขึ้นดังนั้นควรตั้งค่าขีด จำกัด ทั้งระบบในระหว่างการเริ่มต้นระบบในสคริปต์เริ่มต้นและตั้งค่าขีด จำกัด ผู้ใช้ระหว่างการล็อกอินของผู้ใช้ตัวอย่างเช่นโดยใช้ pam_limits
มักจะมีการตั้งค่าเริ่มต้นเมื่อเครื่องบู๊ต ดังนั้นแม้ว่าคุณอาจรีเซ็ต ulimit ของคุณในแต่ละเชลล์คุณอาจพบว่ามันรีเซ็ตกลับไปเป็นค่าก่อนหน้าเมื่อรีบูต คุณอาจต้องการ grep script สำหรับบูตของคุณสำหรับคำสั่ง ulimit ที่มีอยู่หากคุณต้องการเปลี่ยนค่าเริ่มต้น
ulimitไม่ได้ใด ๆ คุณต้องระบุสิ่งที่คุณใช้ (เช่น WSL, Cygwin)
หากคุณใช้ Linux และคุณได้รับข้อผิดพลาดในการอนุญาตคุณจะต้องเพิ่มขีด จำกัด ที่อนุญาตใน/etc/limits.confหรือ/etc/security/limits.confไฟล์ (ซึ่งไฟล์นั้นตั้งอยู่ขึ้นอยู่กับการกระจาย Linux เฉพาะของคุณ)
ตัวอย่างเช่นอนุญาตให้ทุกคนในเครื่องเพิ่มจำนวนไฟล์ที่เปิดได้มากถึง 10,000 เพิ่มบรรทัดลงในlimits.confไฟล์
* hard nofile 10000
จากนั้นออกจากระบบและเชื่อมต่อกับระบบของคุณอีกครั้งและคุณควรจะสามารถ:
ulimit -n 10000
ไม่มีข้อผิดพลาดในการอนุญาต
rootผู้ใช้ คุณต้องระบุroot hard nofile 10000ว่าคุณต้องการปรับrootขีด จำกัด หรือไม่
ulimitและในที่สุดก็พบว่าฉันเข้าสู่ระบบในฐานะ root นั่นเป็นเหตุผลที่ฉันเห็น 1024 ulimit -aต่อไป ผมเปลี่ยน wildcare และเพิ่มภายใน* limits.confทุกอย่างเรียบร้อยดีแล้ว (ฉันใช้กุญแจ ssh ไม่ต้องกังวล: P) - ขอบคุณ !!!
/etc/security/limits.d/นี้:
1) เพิ่มบรรทัดต่อไปนี้ลงใน /etc/security/limits.conf
webuser hard nofile 64000
จากนั้นเข้าสู่ระบบในฐานะผู้ใช้เว็บ
su - webuser
2) แก้ไขสองไฟล์ต่อไปนี้สำหรับ webuser
ผนวกไฟล์. bashrc และ. bash_profileโดยการรัน
echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile
3) ออกจากระบบจากนั้นเข้าสู่ระบบอีกครั้งและตรวจสอบว่าการเปลี่ยนแปลงได้ทำอย่างถูกต้อง:
$ ulimit -a | grep open
open files (-n) 64000
นั่นมันและพวกเขาบูมบูมบูม
หากบริการบางอย่างของคุณเข้าข่าย ulimits บางครั้งก็ง่ายกว่าที่จะใส่คำสั่งที่เหมาะสมลงในสคริปต์เริ่มต้นของบริการ ตัวอย่างเช่นเมื่อ Apache กำลังรายงาน
[การแจ้งเตือน] (11) ทรัพยากรไม่สามารถใช้งานได้ชั่วคราว: apr_thread_create: ไม่สามารถสร้างเธรดผู้ปฏิบัติงาน
พยายามที่จะนำเข้าulimit -s unlimited /etc/init.d/httpdนี่ไม่จำเป็นต้องรีบูตเซิร์ฟเวอร์