ค้นหาเว็บไซต์

วิธีเพิ่มจำนวนขีดจำกัดการเปิดไฟล์ใน Linux


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

อ่านเพิ่มเติม: ตั้งค่าขีดจำกัดกระบวนการทำงานของ Linux ในระดับต่อผู้ใช้

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

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

ค้นหา Linux Open File Limit

ค่าจะถูกเก็บไว้ใน:

cat /proc/sys/fs/file-max

818354

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

ตัวอย่างเช่น บนเซิร์ฟเวอร์ CentOS ของฉัน ขีดจำกัดตั้งไว้ที่ 818354 ในขณะที่บนเซิร์ฟเวอร์ Ubuntu ที่ฉันใช้งานที่บ้าน ขีดจำกัดเริ่มต้นคือ ตั้งค่าเป็น 176772

หากคุณต้องการดูขีดจำกัดแบบฮาร์ดและซอฟต์ คุณสามารถใช้คำสั่งต่อไปนี้:

ตรวจสอบขีดจำกัดฮาร์ดใน Linux

ulimit -Hn

4096

ตรวจสอบ Soft Limits ใน Linux

ulimit -Sn

1024

หากต้องการดูค่าฮาร์ดและอ่อนสำหรับผู้ใช้ที่แตกต่างกัน คุณสามารถเปลี่ยนผู้ใช้ด้วย “su” เป็นผู้ใช้ซึ่งจำกัดจำนวนที่คุณต้องการตรวจสอบ

ตัวอย่างเช่น:

su marin
ulimit -Sn

1024
ulimit -Hn

4096

วิธีตรวจสอบขีดจำกัดตัวอธิบายไฟล์ทั้งระบบใน Linux

หากคุณใช้งานเซิร์ฟเวอร์ แอปพลิเคชันบางตัวอาจต้องการขีดจำกัดที่สูงกว่าสำหรับตัวอธิบายไฟล์ที่เปิดอยู่ ตัวอย่างที่ดีสำหรับบริการ MySQL/MariaDB หรือเว็บเซิร์ฟเวอร์ Apache

คุณสามารถเพิ่มขีดจำกัดของไฟล์ที่เปิดใน Linux ได้โดยแก้ไขคำสั่งเคอร์เนล fs.file-max เพื่อจุดประสงค์ดังกล่าว คุณสามารถใช้ยูทิลิตี sysctl ได้

Sysctl ใช้เพื่อกำหนดค่าพารามิเตอร์เคอร์เนลขณะรันไทม์

ตัวอย่างเช่น หากต้องการเพิ่มขีดจำกัดการเปิดไฟล์เป็น 500000 คุณสามารถใช้คำสั่งต่อไปนี้ในฐานะรูท:

sysctl -w fs.file-max=500000

คุณสามารถตรวจสอบค่าปัจจุบันของไฟล์ที่เปิดอยู่ด้วยคำสั่งต่อไปนี้:

cat /proc/sys/fs/file-max

ด้วยคำสั่งข้างต้น การเปลี่ยนแปลงที่คุณทำจะยังคงใช้งานได้จนกว่าจะรีบูตครั้งถัดไปเท่านั้น หากคุณต้องการนำไปใช้อย่างถาวร คุณจะต้องแก้ไขไฟล์ต่อไปนี้:

vi /etc/sysctl.conf

เพิ่มบรรทัดต่อไปนี้:

fs.file-max=500000

แน่นอนคุณสามารถเปลี่ยนหมายเลขได้ตามความต้องการของคุณ หากต้องการตรวจสอบการเปลี่ยนแปลงอีกครั้งให้ใช้:

cat /proc/sys/fs/file-max

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

sysctl -p

ตั้งค่าขีดจำกัดการเปิดไฟล์ระดับผู้ใช้ใน Linux

ตัวอย่างข้างต้นแสดงวิธีการตั้งค่าขีดจำกัดสากล แต่คุณอาจต้องการใช้ขีดจำกัดต่อผู้ใช้ เพื่อจุดประสงค์ดังกล่าว ในฐานะผู้ใช้รูท คุณจะต้องแก้ไขไฟล์ต่อไปนี้:

vi /etc/security/limits.conf

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

บรรทัดที่คุณควรเพิ่มใช้พารามิเตอร์ต่อไปนี้:

<domain>        <type>  <item>  <value>

นี่คือตัวอย่างการตั้งค่าขีดจำกัด soft และ hard สำหรับผู้ใช้ marin:

## Example hard limit for max opened files
marin        hard nofile 4096
## Example soft limit for max opened files
marin        soft nofile 1024

ความคิดสุดท้าย

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

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