DirectAdmin CB 2.0 Apache 2.4 ไม่สามารถ Start ได้ [ปัญหา+วิธีแก้ไข]

Apache 2.4 Start ไม่ขึ้น! ปัญหานี้ทำให้ผมปวดหัวอย่างมาก…, เนื่องจาก Apache 2.2 มันไม่มีบัคนี้ และหลังจากอัพมาเป็น Apache 2.4 ก็พบเจออยู่บ่อยๆ ซึ่งมันจะทำการ Restart Apache แล้วก็หายเข้ากรีบเมฆไปเลย ทำให้ไม่สามารถเข้าเว็บไซต์ได้

หมายเหตุ: เหมือนว่าจะเป็นเฉพาะ Apache 2.4 + FastCGI ในระบบ DirectAdmin เท่านั้นนะครับ

แรกๆผมก็ใช้วิธีการรัน Cron เช็คผ่าน URL ด้วยการใช้คำสั่ง PHP Curl เอา, หลังๆมาก็คงมีคนเจอเยอะมั้ง ทาง DirectAdmin เลยบอกวิธีแก้ไขปัญหานี้มา

ถ้า Start Apache ไม่ขึ้น ให้ทำการ Clear sem ก่อน (ไม่รู้เรียกถูกไหม แต่คำสั่งถูกนะครับ)

for i in `ipcs -s | awk '{print $2}'`; do ipcrm -s $i; done

จากนั้นก็ใช้คำสั้ง Apache restart ตามปกติ

service httpd restart

มันก็จะกลับมาทำงานได้ตามปกติของมันครับ, และวิธีการป้องกันไม่ให้มันเกิดขึ้น ให้ใช้คำสั่งนี้ครับ

echo "kernel.msgmni = 1024" >> /etc/sysctl.conf; echo "kernel.sem = 250 256000 32 1024" >> /etc/sysctl.conf; sysctl -p

ถึงกระนั้นก็ตาม…, มันก็ยังดับได้อยู่นะ ตอนแรกก็นึกว่ามันจะไม่ดับอีกแล้ว อะไรทำนองนั้น.. แต่ไม่เลยครับ มันยังดับได้อยู่ วิธีการก็คือ ให้ทำการตั้ง Cron เช็ค (ทุกชั่วโมง) ตามโค๊ดด้านล่างนี้ ไว้ที่ /etc/cron.hourly/ipcs_check นะครับ

#!/bin/sh
 
[email protected]
MAX_SEMAPHORES=15
 
IPCS=/usr/bin/ipcs
IPCRM=/usr/bin/ipcrm
MAIL=/bin/mail
 
COUNT=`${IPCS} | grep apache | wc -l`
 
if [ "$COUNT" -le $MAX_SEMAPHORES ]; then
       #all is well, there are no semaphore build-ups.
       exit 0;
fi
 
#we have more than MAX_SEMAPHORES, so clear them out and restart Apache.
 
LIST=/root/sem.txt
 
${IPCS} | grep apache | awk '{print $2}' > ${LIST}
for i in `cat ${LIST}`; do
{
       ${IPCRM} -s $i;
};
done;
 
/etc/init.d/httpd restart
 
TXT="${COUNT} semaphores cleared for apache for `hostname`"
echo "${TXT}" | ${MAIL} -s "${TXT}" ${EMAIL}
 
exit 1;

คำสั่งนี้จะมาพร้อมกับระบบ Monitor ทางอีเมลล์นะครับ, ให้แก้ไขจาก [email protected] เป็น Email ของคุณ

จากนั้นต่อไป ให้ทำการกำหนดสิทธิ์ให้สามารถใช้งานได้ด้วยคำสั่งนี้ครับ

chmod 755 /etc/cron.hourly/ipcs_check

เท่านี้ก็เป็นอันเสร็จสิ้นครับ

แหล่งอ้างอิง: