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
นี่ไม่จำเป็นต้องรีบูตเซิร์ฟเวอร์