Home | Back
การเพิ่มขีดจำกัดในการเปิด Socket Connection ใน Ubuntu
Tuesday, 19 November 2013
ผมได้พัฒนาระบบตัวหนึ่ง ซึ่งจะต้องรองรับการเปิด Socket จำนวนมาก แล้วก็เจอปัญหาว่า error: [Errno 24] Too many open files เนื่องจากระบบได้จำกัดจำนวนการเปิดไฟล์จำนวนมาก ซึ่งรวมไปถึงการเปิด Socket ด้วยครับ ดังตัวอย่างนี้ครับ
โดยเราสามารถไปเพิ่มขีดจำกัดในการเปิดไฟล์ให้เพิ่มขึ้นได้ดังนี้ครับ
1. ตรวจสอบการจำกัดในการเปิดไฟล์
เราสามารถตรวจสอบว่า ขณะนี้ระบบของเรา มีขีดจำกัดในการเปิดไฟล์ไว้เท่าไหร่ ดังคำสั่งต่อไปนี้ครับ
จะเห็นว่าจะมีขีดจำกัดเพียงแค่ 1024 เท่านั้น ทำให้ระบบของเราไม่สามารถรองรับงานในกรณีที่มีการเปิด socket จำนวนที่มากกว่า 1024 ได้ครับ
2. แก้ไขไฟล์ /etc/security/limits.conf
เมื่อเราต้องการเพิ่มขีดจำกัดในการเปิดไฟล์ให้มากขึ้น เพื่อให้ระบบของเรารองรับ socket connection จำนวนมาก ๆ ได้ เราสามารถทำได้โดยไปแก้ไขไฟล์ /etc/security/limits.conf ดังนี้ครับ
File : /etc/security/limits.conf
จะเห็นว่าเราจะทำการกำหนด limit ในการการเปิดไฟล์ไว้ที่ 50000 ในผู้ใช้ทั้งหมดและ root เนื่องจาก root ไม่ได้รวมใน * ด้วย จึงต้องกำหนดแยกมาอีกชุดนึงครับ จากนั้นก็ทำการ reboot ระบบใหม่ และใช้คำสั่ง ulimit -n ตรวจสอบดูอีกครั้งว่าได้มีการเพิ่มขีดจำกัดแล้ว ก็เป็นอันจบพิธีครับ