Golfreeze.packetlove.com: Life style of Golfreeze Canon400D Family kammtan.com Jazz Freebsd Unix Linux System Admin guitar Music
All about unix linux freebsd and FAQ for Packetlove.com Web hosting , Mail hosting , VoIP + IP PBX server => การ maintenance ระบบทั้งหมด แก้ไขปัญหาที่เกิด หาต้นตอปัญหา => Topic started by: golfreeze on ธันวาคม 13, 2013, 10:22:44 am
-
วันนี้ เจอปัญหา ว่า apache start ไม่ขึ้น แล้วดูจาก log error_log แสดงดังนี้
No space left on device: mod_rewrite: could not create rewrite_log_lock Configuration Failed
เกิดจากตัว apache ไม่สามารถเขียน rewrite log ได้เนื่องจาก space ของบน device เต็ม ครับ
ถ้าลองสั่งให้ start จะเห็นว่าไม่สามารถ start ขึ้นได้
root@roy:/etc/init.d# /etc/init.d/apache2 start
Starting web server (apache2)...Warning: DocumentRoot [/var/www/club.com/holy/htdocs] does not exist
failed!
ทำการเชค log calling process has read acccess ตัว user apache ขึ้นอยู่กับว่าตอนที่ทำการลง apache application ระบุเป็น user อะไรนะครับ ใส่ให้ถูกด้วย ไม่งั้นจะไม่เจอ
อาจจะเป็น : apache , httpd , www-data , web ก็ใส่ให้ตรงด้วย ของผมเป็น www-data
root@roy:/etc/init.d# ipcs -s | grep www-data
0x00000000 37683200 www-data 600 1
0x00000000 37715969 www-data 600 1
0x00000000 39354370 www-data 600 1
0x00000000 39387139 www-data 600 1
0x00000000 39550980 www-data 600 1
0x00000000 39583749 www-data 600 1
ทำการเครียร์ค่า log ดังนี้
#ipcs -s | grep www-data | awk '{print "ipcrm sem " $2}' | sh
#/etc/init.d/apache2 restart
ก็จะใช้งานได้ ปกติครับผม
-
[root@log httpd]# tail -f error_log
AH00016: Configuration Failed
[Sat Apr 23 04:23:08.000862 2016] [core:emerg] [pid 8301] (28)No space left on device: AH00023: Couldn't create the proxy mutex
[Sat Apr 23 04:23:08.001035 2016] [proxy:crit] [pid 8301] (28)No space left on device: AH02478: failed to create proxy mutex
AH00016: Configuration Failed
[Sat Apr 23 04:24:02.000742 2016] [core:emerg] [pid 8625] (28)No space left on device: AH00023: Couldn't create the proxy mutex
[Sat Apr 23 04:24:02.000934 2016] [proxy:crit] [pid 8625] (28)No space left on device: AH02478: failed to create proxy mutex
AH00016: Configuration Failed
[Sat Apr 23 04:24:08.000923 2016] [core:emerg] [pid 8651] (28)No space left on device: AH00023: Couldn't create the proxy mutex
[Sat Apr 23 04:24:08.001127 2016] [proxy:crit] [pid 8651] (28)No space left on device: AH02478: failed to create proxy mutex
AH00016: Configuration Failed
เกิดจากตัว httpd ไม่สามารถติดต่อสื่อสารกับตัว child process ของมันได้ เนื่องจาก มีการเปิดการใช้งานถึง limit ที่ตั้งไว้
ทำการเชคได้โดย
#ipcs -s
0x00000000 37683200 www-data 600 1
0x00000000 37715969 www-data 600 1
0x00000000 39354370 www-data 600 1
0x00000000 39387139 www-data 600 1
0x00000000 39550980 www-data 600 1
0x00000000 39583749 www-data 600 1
หลังจากทราบแล้วทำการเครียร์ได้โดย
#for i in `ipcs -s | awk '/httpd/ {print $2}'`; do (ipcrm -s $i); done
หรือถ้ายังไม่ออก
#ipcs -s | grep httpd | awk '{print "ipcrm sem " $2}' | sh
หรือสามารถปรับขยาย limitในส่วนของ sysctl ของ OS ได้ครับผม
kernel.msgmni = 1024
kernel.sem = 250 256000 32 1024
ให้ค่าใหม่เริ่มทำงาน มันเพิ่มขนาดของตัว msgmni เพิ่มขึ้นครับ
#sysctl -p
#/etc/init.d/httpd restart
ก็จะเข้าใช้งานเว็บได้ปกติครับผม
-
หรือสามารถเขียนเป็น shell script ให้รันทุกวัน ได้นะครับเพื่อทำการเครียร์ apache semaphores
cd /etc/cron.daily
vi ipcs_check
#!/bin/sh
EMAIL=your@email.com
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;
แล้วทำการปรับสิทธิ์ให้ execute ได้
chmod 755 ipcs_check
./ipcs_check
ถ้าจะไม่ให้ส่งเมลก็ comment
#echo "${TXT}" | ${MAIL} -s "${TXT}" ${EMAIL}
ด้วยนะครับ