در وب سرور apache, سمافورها برای پردازش ارتباط بین مبدا و مقصد استفاده ميشود.
زمانیکه سمافورها پر بشن ، وب سرور عملکرد مناسبی نداره و ممکن هست قطع بشه ، در این مواقع در error log مربوط به apache خطای زیر رو مشاهده میکنید:
No space left on device: Couldn't create accept lock
و سایتها مشاهده نمیشن
من در این مقاله اسکریپتی را به شما معرفی میکنم که سمافورها را هر یک ساعت بررسی کنه .
برای اینکار فایل زیر را ایجاد میکنیم:
/etc/cron.hourly/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;
و پرمیژن این فایل را 755 قرار میدهیم.
بنده این اسکریپت رو تست کردم و کارکردش چک شده .
شما هم میتونین تست کنین تا از قطعی های احتمالی در مواقع پر شدن سمافورها جلوگیری کنید.