วิธีเพิ่มจำนวนขีดจำกัดการเปิดไฟล์ใน 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 และ เรียนรู้วิธีใช้งาน พวกเขาจะช่วยคุณได้มากสักวันหนึ่ง