วิธีการตั้งค่า ulimit อย่างถาวร?


19

เกี่ยวกับ Debian Wheezy ulimit -aให้:

open files                      (-n) 1024

ฉันเพิ่มสิ่งนี้ลงใน /etc/security/limits.conf

*                hard    nofile          64000

จากนั้นรีบูต

และulimit -aยังให้จำนวนไฟล์เปิดสูงสุด 1024 ไฟล์ใครบ้างที่สามารถเปิดไฟบ้าง?


อาจเป็นโฮสต์เสมือนหรือไม่
Dennis Nolte

ไม่มันเป็นเซิร์ฟเวอร์ mongodb
Icu

คำตอบ:


15

ตัวเลือกที่หนึ่ง: คุณไม่ได้ตั้งค่า softlimit ที่สูงขึ้นเช่นกัน

ทางออกที่เป็นไปได้:

ใน /etc/security/limits.conf เพิ่ม

* soft nofile 2048

ทดสอบกับ

ulimit -n 2048 

ตัวเลือกที่สอง: คุณเข้าสู่ระบบในฐานะผู้ใช้และในไฟล์ "config" (โปรไฟล์ bashrc บางอย่างเช่นนี้) ขีด จำกัด ซอฟต์ถูกตั้งค่าเป็นค่าที่ต่ำกว่า

ทางออกที่เป็นไปได้สำหรับ greim ulimit ในโฟลเดอร์ etc และ / หรือโฟลเดอร์บ้านของคุณ

คำเตือน:ขึ้นอยู่กับจำนวนไฟล์ / ไดเรกทอรีที่คุณมีในนั้นคุณอาจต้องการพิจารณาเฉพาะไดเรกทอรี / ไฟล์เฉพาะ

ป.ล. : มีคำถามที่คล้ายกันมากมายที่นี่คุณอาจต้องการอ่าน

พิเศษฮาร์ด VS ซอฟท์ จำกัด

อ่านที่นี่เพื่อดูวิธีแก้ปัญหาอื่น ๆ ที่เป็นไปได้ซึ่งให้รายละเอียด มากเกินไปไฟล์เปิดมากเกินไป


ที่จริงแล้วฉันพยายามตั้งขีด จำกัด ฮาร์ดไว้ที่ 64000 ดังนั้นขีด จำกัด ซอฟต์ยังคงอยู่ที่ 1024 ตอนนี้ฉันพยายามตั้งค่าขีด จำกัด แบบนุ่มเป็น 64000 + ฮาร์ด = 72000 แต่มันไม่ทำงาน ฉันลองด้วย "* - nofile 64000" และฉันก็ได้ผลลัพธ์เดียวกัน
ห้องไอซียู

หลังจากอ่าน "ไฟล์ที่เปิดมากเกินไป" ฉันคิดว่าการตั้งค่าเคอร์เนลจะแทนที่การตั้งค่า จำกัด แต่: "fs.file-max = 4933738"
Icu

@Icu ลองคำตอบจากคนนี้เช่นกัน: serverfault.com/questions/93234/.. อาจเกี่ยวข้องกับเชลล์ของคุณ
Dennis Nolte

ฉันเพิ่ม 'ต้องการเซสชัน pam_limits.so' เพื่อ /etc/pam.d/ อื่น ๆ และเซสชั่นทั่วไป แต่มันไม่ได้ช่วย ... เป็นทางเลือกฉันเพิ่ม 'ulimit -n' ลงในสคริปต์ init ของฉันและทำงานได้ แต่ฉันสงสัยว่าทำไมฉันไม่สามารถรับค่าที่ถูกต้องในเปลือกของฉัน
Icu

20

มีข้อบกพร่องใน Debian หากต้องการเพิ่มulimitคุณต้องเพิ่มส่วนนี้ลงใน/etc/pam.d/common-sessionไฟล์:

session required pam_limits.so

และ/etc/security/limits.confเพิ่ม:

*               soft    nofile          65535
*               hard    nofile          65535

จากนั้นรีบูทระบบ


1
ไม่ต้องการให้ฉันทำการเปลี่ยนแปลงใด ๆ กับ/etc/pam.d/common-sessionไฟล์ มันใช้งานได้โดยเพิ่มอีกสองบรรทัดลงในlimits.confไฟล์ :-)
Francesco Casula

คุณไม่จำเป็นต้องรีบูต
David Goodwin

นี่มันโหดร้าย ใน debian 7 ตอนนี้และมันไม่ทำงาน ไม่แน่ใจว่าต้องทำอย่างไร :( - ฉันอาจเปิดคำถามใหม่
NiCk Newman

12
ความเจริญ สัญลักษณ์แทนไม่ได้ทำงาน* rootฉันเพิ่มrootแทน*และมันใช้งานได้ ขอขอบคุณ!
NiCk Newman

@FrancescoCasula - เวอร์ชันของ Debian คืออะไร เพียงแค่พยายามคิดออกว่านี่เป็นข้อผิดพลาดจริง ๆ หรือไม่และถ้ามันยังมีอยู่จริง
UpTheCreek

0

ในกรณีของฉัน Apache บน Debian 10 ข้างต้นไม่ได้ช่วยแม้ว่านี้ทำงาน:

echo "APACHE_ULIMIT_MAX_FILES='ulimit -n 16384'" >> /etc/apache2/envvars
service apache2 restart

ฉันตรวจสอบด้วย:

cat /proc/$pid/limits

..where $pidเป็นรหัสกระบวนการของหนึ่งในกระบวนการ Apache

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