กำหนดขีด จำกัด ไฟล์สูงสุดในกระบวนการทำงาน


27

ฉันมีกระบวนการทำงานที่ยาวนานซึ่งในที่สุดจะถึงขีด จำกัด ไฟล์สูงสุดที่เปิด ฉันรู้วิธีการเปลี่ยนหลังจากที่ล้มเหลว แต่มีวิธีการเปลี่ยนสำหรับกระบวนการทำงานจากบรรทัดคำสั่งหรือไม่

คำตอบ:


28

ในเมล็ดที่ใหม่กว่า (2.6.32+) บน CentOS / RHEL คุณสามารถเปลี่ยนได้ที่รันไทม์ด้วย / proc / <pid> / ข้อ จำกัด :

cd /proc/7671/
[root@host 7671]# cat limits  | grep nice
Max nice priority         0                    0                    
[root@host 7671]# echo -n "Max nice priority=5:6" > limits
[root@host 7671]# cat limits  | grep nice
Max nice priority         5                    6                    

กฎนั้น! ไม่มีความคิดที่คุณสามารถเขียนลงไฟล์ได้
Clee

4
ไม่ทำงานสำหรับฉันบน Ubuntu 12.04
Poma

5
นี้ไม่ได้ทำงานบน 3.2 เคอร์เนลของฉัน ผมคิดว่าการกระจายของคุณมีแพทช์อย่างไม่เป็นทางการที่เฉพาะเจาะจงสำหรับนี้เพราะผมเห็นร่องรอยของไม่มีแพทช์นี้ในเคอร์เนลของFS / proc / base.c
Totor

อาจเป็น ... ฉันรู้ว่ามีอยู่ในเมล็ด RHEL / CentOS ดูเหมือนว่าไม่มีอยู่ในเมล็ดเดเบียน
Sig-IO

2
'setprlimit' เป็นวิธีการในอนาคตและวิธีที่แนะนำดูคำตอบต่อไป
Sig-IO

26

เป็นเอกสารที่นี่ที่prlimitคำสั่งนำมาใช้กับ util ลินุกซ์ 2.21 ช่วยให้คุณอ่านและเปลี่ยนข้อ จำกัด ของกระบวนการการทำงานของ

นี่คือการติดตามการเขียน/proc/<pid>/limitsซึ่งไม่ได้รวมอยู่ในเคอร์เนลการฉีด วิธีนี้ควรใช้งานได้ดี

หากคุณไม่ได้มีprlimit(1)แต่คุณสามารถค้นหารหัสไปเป็นรุ่นที่เรียบง่ายในmanpageprlimit(2)


2
+1 สำหรับรุ่นที่เรียบง่ายใน manpage!
Totor

คำเตือน: "memcached" จะ segfault หากคุณเปลี่ยน "nolimit" ในกระบวนการของมันหลังจากที่พบข้อ จำกัด ไม่ใช่ความคิดที่ดีที่จะใช้ข้อ จำกัด ที่เขียนได้
John


2

คุณสามารถลอง ulimit man ulimitด้วยตัวเลือก -n แต่หน้า mag ไม่ใช่ระบบปฏิบัติการส่วนใหญ่ไม่อนุญาตให้ตั้งค่านี้

คุณสามารถตั้งค่าขีด จำกัด รายละเอียดไฟล์ทั้งระบบโดยใช้sysctl -w fs.file-max=Nและทำการเปลี่ยนแปลงยังคงมีอยู่หลังการบูทระบบ/etc/sysctl.conf

อย่างไรก็ตามฉันขอแนะนำให้ดูที่กระบวนการเพื่อดูว่าจำเป็นต้องมีไฟล์จำนวนมากที่เปิดในเวลาที่กำหนดหรือไม่และถ้าคุณสามารถปิดบางไฟล์ลงและมีประสิทธิภาพมากขึ้นในกระบวนการ


สิ่งที่เปิดไฟล์เป็นข้อผิดพลาด แต่ฉันไม่สามารถคิดออก ในขณะที่ฉันชอบที่จะทำเช่นนั้นการผลิตล้มเหลวเป็นระยะ ๆ ในช่วงกลางวัน
kāgii

ulimitไม่สามารถใช้การตั้งค่าเพื่อกระบวนการทำงาน
ลองจับได้ในที่สุด

0

กระบวนการสามารถเปลี่ยนขีด จำกัด ซอฟต์ของตัวเองได้หากโปรแกรมถูกตั้งค่าให้ทำ (หรือถ้าคุณจัดการแฮ็คมัน) แต่ก็ไม่สามารถเพิ่มขีด จำกัด ฮาร์ดได้เว้นแต่จะมีความสามารถ CAP_SYS_RESOURCE คุณสามารถตรวจสอบข้อ จำกัด /proc/$pid/limitsที่รันไทม์ใน

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