База знаний
Проблема с доступом к серверу
Ошибка 404
Как привязать домен к хостингу
Зачем нужен SSL сертификат
Установка SSL сертификата.
arrow step back Назад
13 Октября 2023

Семафоры Apache и Zend Data Cache

Веб-сервер Apache и Zend Data Cache (На тарифных планах оптимизированных для Bitrix CMS) после не корректного завершения своей работы может не высвобождать из памяти свои сигнатуры семафоров, которые в последствии не дают серверу стартовать. 

Если такая ошибка возникает как правило вместо вебстраниц веб сервер отдаёт пустые страницы

Как это можно диагностировать? 

1) Нам понадобится shell доступ к VPS серверу, получить его можно руководствуясь статьёй: 

Останавливаем Веб - Сервер Apache если он запущен:

# service httpd stop

3) Следующей командой проверим журналы:

# grep 'No space left\|ZSemaphoreImpl' /var/log/httpd/error_log* 

попробуем найти записи похожие на:

[Wed Mar 25 12:34:45 2011] [crit] (28)No space left on device: mod_rewrite: could not create rewrite_log_lock
или
[Wed Mar 22 23:34:12 2011] [emerg] (28)No space left on device: Couldn't create accept lock (/var/lock/apache2/accept.lock. 34201)

 или в случае установленного Zend Data Cache:

 [26.07.2012 15:01:43 WARNING] ZSemaphoreImpl::constructor: failed to get semaphore id: File exists
24 18:31 zsemfile_RestartAgentSem052412182953OURCE_semid

Если в логах Мы нашли эти записи, то проверим ниличие свободного пространства командой : 

# df -h /dev/vzfs 

Filesystem            Size  Used Avail Use% Mounted on

/dev/vzfs             5.0G  494M  4.6G  10% /

 

4) Итак свободного пространства у нас достаточно, теперь посмотрим на память занятую семаформами следующей командой:

# ipcs -s

Вывод этой команды будет выглядеть примерно так :

------ Semaphore Arrays --------

key                semid          owner      perms   nsems

0x0003f73b    2121760768   apache        666        3

10x00000000  399507458    apache        600        1

40x73010002  589828         apache        660        1        

10x00000000  1720844294   apache        600        1

10x00000000  1720909832   apache        600        1

 

5) И так мы выяснили, что Сервер Apache перед тем как отключиться действительно не очистил таблицы семафоров, очистить их можно следующей командой :

# for i in `ipcs -s | grep '[А,a]pache\|[B,b]itrix' | awk --source '/0x0*.*[0-9]* .*/ {print $2}'` ; do ipcrm -s ${i} ; done 

 

Проверяем точку /tmp на наличие сигнатур  Zend Data Cache

# ls -la /tmp/[Z,z]semfile*

Пример вывода если таковые есть:

-rw-r-----  1 apache apache      0 May 24 18:31 zsemfile_ConfigurationChangedEvent052412182953OURCE
-rw-r--r--  1 apache apache      7 May 24 18:31 zsemfile_ConfigurationChangedEvent052412182953OURCE_semid
-rw-r-----  1 apache apache      0 May 24 18:31 zsemfile_RestartAgentSem052412182953OURCE

Удаляем:

# rm -f /tmp/[Z,z]semfile*

Последним шагом мы стартуем апач :

# service httpd start