เมื่อมีการ add domain เยอะ process ของ httpd ทุกตัวจะมีการเปิดไฟล์จำนวนมาก สมมติ 1 httpd เปิดไฟล์ 2000 ไฟล์ ถ้ามี httpd 20 ตัวทำงานอยู่ ก็เท่ากับว่าจะมีการเปิดไฟล์ถึง 4หมื่นไฟล์เลยทีเดียว ซึ่ง centos จะมีการ limit จำนวน file open descriptor อยู่
คำสั่งในการตรวจสอบ maximum file open ของทั้งระบบ
cat /proc/sys/fs/file-max
คำสั่งตรวจสอบ max file open สำหรับ user
ulimit -n
เพิ่มจำนวน max file open สำหรับ user ให้เป็น 500000
ulimit -n 500000
แต่ค่าที่ set ด้วยคำสั่ง ulimit -n ในข้างต้น จะถูก reset กลับไปเป็น default เมื่อเรา reboot ดังนั้นวิธีที่ทำให้ apache ทำงานได้ เราจะต้อง set ulimit -n ก่อนโหลด apache สามารถทำได้ง่ายๆด้วยคำสั่ง
nano /etc/init.d/httpd
แล้วเพิ่ม ulimit -n 500000 เข้าไป บรรทัดบนสุด แล้ว save ลอง reboot ดูว่า apache โหลดตอน boot หรือไม่
เท่านี้ก็แก้ปัญหา apache ไม่ start เมื่อ add domain เยอะๆ ได้แล้ว
ปล. ถ้า apache ไม่ start อีก ลองเปลี่ยน 500000 เป็นค่าอื่นที่สูงกว่าดู

Leave a Reply