ฉันจะเพิ่มขีด จำกัด การเปิดไฟล์สำหรับกระบวนการทั้งหมดได้อย่างไร


32

ฉันสามารถใช้ ulimit ได้ แต่ฉันคิดว่ามันมีผลกับเซสชั่นเชลล์เท่านั้น ฉันต้องการขีด จำกัด ที่เพิ่มขึ้นสำหรับกระบวนการทั้งหมด นี่คือ Red Hat


Red Hat รุ่นใดกันล่ะ? RHEL5?
mattdm

คำตอบ:


26

คำตอบของจัสตินจะบอกคุณถึงวิธีเพิ่มจำนวนไฟล์ที่เปิดซึ่งมีอยู่ทั้งหมดในระบบทั้งหมด แต่ฉันคิดว่าคุณกำลังขอวิธีเพิ่มขีด จำกัด ต่อผู้ใช้ทั่วโลก คำตอบนั้นคือการเพิ่มบรรทัดต่อไปนี้/etc/security/limits.conf:

*               soft    nofile            2048
*               hard    nofile            2048

(โดยที่ * หมายถึงผู้ใช้ทั้งหมด)

man limits.confมีบางเอกสารสรุปในแฟ้มที่ตัวเองและในการเป็น นี้จะดำเนินการผ่านทางpam_limits.soโมดูลซึ่งเรียกว่าสำหรับการให้บริการต่าง ๆ /etc/pam.d/การกำหนดค่าใน

และฉันต้องยอมรับว่าฉันไม่รู้ว่าที่ 1024 ค่าเริ่มต้นมาจากไหน และเชื่อฉันฉันดู ฉันได้ลองโดยไม่ต้องตั้งค่าโมดูล pam_limits และก็ยังมี มันจะต้องถูกเข้ารหัสอย่างหนักในบางแห่ง แต่ฉันไม่แน่ใจว่าอยู่ที่ไหน


2
อืม ... ฉันตั้งไว้อย่างถูกต้องแล้ว ออกจาก SSH แล้วกลับมาอีกและขีด จำกัด ซอฟต์ของฉันยังคงตั้งไว้ที่ 1024 มีบางอย่างที่ฉันขาดหายไปหรือไม่ที่ทำให้ "ใช้งานได้" นี้? ขอบคุณ
Joshua Pinter

@mattdm - มันเป็นมูลค่าการกล่าวขวัญว่าในการกระจาย Linux บางไฟล์ที่กล่าวถึงจะอยู่ภายใต้: / etc /limits.conf
Guy Avraham

13

อ้างอิงจากบทความลินุกซ์เพิ่มจำนวนสูงสุดของการเปิดไฟล์ / ไฟล์อธิบาย (FD)คุณสามารถเพิ่มไฟล์ที่เปิด จำกัด /etc/sysctl.confโดยการเพิ่มรายการไปยัง

ผนวกคำสั่ง config ดังต่อไปนี้:

fs.file-max = 100000

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

# sysctl -p

คุณยังสามารถตรวจสอบการตั้งค่าของคุณด้วยคำสั่ง:

# cat /proc/sys/fs/file-max

ฉันไม่แน่ใจเกี่ยวกับการออกจากระบบและอีกครั้งสำหรับการตั้งค่านี้ซึ่งทั้งระบบ (ที่ไปสำหรับทุกอย่างสวยมากใน sysctl ... )
mattdm

13

เพิ่มจำนวน ulimit เปิดไฟล์สูงสุดใน Linux

1. ขั้นตอน: เปิดsysctl.conf และเพิ่มบรรทัดนี้ fs.file-max = 65536

$ vi /etc/sysctl.conf

เพิ่มบรรทัดใหม่และ

fs.file-max = 65536

บันทึกและออก.

2.Step:

$ vi /etc/security/limits.conf

และเพิ่มด้านล่างที่กล่าวถึง

* soft     nproc          65535
* hard     nproc          65535
* soft     nofile         65535
* hard     nofile         65535

บันทึกและออกจากการตรวจสอบไฟล์สูงสุดที่เปิด ulimit

# ulimit -a

....
open files                      (-n) 65535

6

แต่ถ้าคุณกำลังพยายามเพิ่มจำนวนสูงสุดของไฟล์ที่เปิดอยู่ของบริการเช่น MariaDB หรืออย่างอื่น (ใช้systemd ) คุณต้องทำในไฟล์. service โดยตรง

/lib/systemd/system/<servicename>.service

จะเป็นดังนี้:

[Unit]
Description=Some Daemon
After=syslog.target network.target

[Service]
Type=notify
LimitNOFILE=49152
ExecStart=/usr/sbin/somedaemon

[Install]
WantedBy=multi-user.target

คำตอบที่สมบูรณ์อยู่ที่นี่: การเพิ่ม nproc สำหรับกระบวนการที่เปิดตัวโดย systemd บน CentOS 7


สิ่งนี้จำเป็นต้องได้รับการยกระดับเนื่องจากความแพร่หลายของsystemdการเปลี่ยนแปลงที่เกิดขึ้นอย่างต่อเนื่องกำลังเพิ่มขึ้นทั่วทั้งระบบนิเวศ Linux แม้ว่าฉันจะแนะนำให้แก้ไขคำตอบcp -r /lib/systemd/system/mariadb.service /etc/systemd/system/และทำการเปลี่ยนแปลงไฟล์นั้นแทนที่จะเป็นไฟล์บริการทั่วทั้งระบบที่จัดทำโดยแพ็คเกจ
ILMostro_7

3

suplement:

คุณอาจพบการกำหนดค่าในสถานที่ที่แตกต่างกัน: /etc/security/limits.d/*.conf

ฉันต้องแก้ไขมัน มันไม่ทำงานหากไม่มีมัน รูปแบบเหมือนกับสำหรับlimits.conf


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