Apache itk уходит в сон из-за Zend opcache

12 3
D
На сайте с 05.06.2007
Offline
155
3713

Приветствую!

Встретились с новой проблемой, на более менее нагруженных серверах апач начинает висеть в бездействии. У нас работают разные конфигурации и сборки, проблема только с php7:

debian 8 + apache2 + itk + php7 dotdeb пакетный.

Настройки opcache в php.ini

opcache.max_accelerated_files=10000

opcache.memory_consumption=256

opcache.interned_strings_buffer=16

opcache.enable_cli=1

Зависание выглядит таким бразом, внезапно все процессы апача начинают спать, упирается всё это дело в лимит процессов, получаем 200 www апачей которрые просто ждут своих 200 разных юзерных itk потомков, а эти потомки в свою очередь ждут F_WRLK на ZendSem, в результате имееем 400 процессов которые ждут чуда. В нормальном даже в очень нагруженном состоянии у нас не более 50 процессов.

Если расмотреть потомка поближе то имеем такое:

strace -p 24209

Process 24209 attached

fcntl(2981, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=0, len=1}

2981 дескриптор нам указывает на:

apache2 24209 user1213 2981u REG 253,0 0 22074361 /tmp/.ZendSem.rz9P8a (deleted)

И так с каждым процессом.

opcache.enable=0 - решает проблему, и больше ничего не виснет и даже не тормазит от перегрузок, но не очень хочется отключать основную фишку 7ки.

Гуглил не мало, но решений нигде нет.

Сразу скажу что /tmp не отдельный раздел, места полно, диски SSD, а вот deleted немного смущает.

Подскажите, может кто-то с таким встречался, или есть ли вообще у вас мысли от чего такое безобразие может возникать? Может нудно как то покрутить opcache ini? :confused:

Зарание всем спасибо за любую помощь.

Написал не мало шедевров ;)
[Удален]
#1

Попробуйте установить так как описано здесь, возможно поможет:

http://tokarchuk.ru/2016/04/php7/

esetnod
На сайте с 16.07.2009
Offline
134
#2

Может в дотдебовской сборке что-то не так?

Т.к. использую дистрибутивный 5.6 с opcache и тоже на itk, проблем нет, в т.ч. под нагрузкой.

Быстрый хостинг на SSD от $0.99 (http://just-hosting.ru/) | OpenVZ (http://just-hosting.ru/vds.html) и KVM (http://just-hosting.ru/vds-kvm.html) VDS от $7.95
D
На сайте с 05.06.2007
Offline
155
#3
esetnod:
Может в дотдебовской сборке что-то не так?
Т.к. использую дистрибутивный 5.6 с opcache и тоже на itk, проблем нет, в т.ч. под нагрузкой.

Да вот мы такого тоже долгое время не замечали пока не перешли на 24х ядерные сервера и не начали их соответственно нагружать. Проблема стала возникать 1-2 раза в день. Ну а php 5.6 также запущен параллельно, правда без opcache.

Какие у вас по нему настройки в php.ini? (дефолтные не нужны)

pupseg
На сайте с 14.05.2010
Offline
347
#4

хм... первый раз вижу.centos 6 - полет нормальный.

если съехать на 5.6 с opcache ?

---------- Добавлено 30.09.2016 в 21:46 ----------

Well-Web:
Попробуйте установить так как описано здесь, возможно поможет:
http://tokarchuk.ru/2016/04/php7/

@Для начала надо установить всё, что нам может понадобиться при компиляции php.@

Дальше не читал. Что будет , если полгода сервера не касались, только мониторили, а потом выполнили apt-get update && apt-get upgrade ?

как эту систему потом обновлять? руками? а если серверов - несколько десятков ?

Качественная помощь в обслуживании серверов. (/ru/forum/661100) Бесплатных консультаций не даю, не помогаю, не обучаю. Минималка от 100$. Как пропатчить KDE-просьба не спрашивать. Есть форумы (http://linux.org.ru) и полезные сайты (http://www.opennet.ru/).
esetnod
На сайте с 16.07.2009
Offline
134
#5
Dimanych:

Какие у вас по нему настройки в php.ini? (дефолтные не нужны)

Такие же, в принципе, только памяти выделено 512 Мб и задан opcache.max_file_size в 200 Кб.

Не знаю, насколько это уместно, но можно попробовать opcache.preferred_memory_model сменить на shm временно, в любом случае предположений больше нет.

D
На сайте с 05.06.2007
Offline
155
#6

pupseg, съехать на 5.6 не получится, клиенты не простят внезапный откат PHP версии)

У кого нагруженные сервера (LA до 10) и php желательно 7 и обязательно с opcache скиньте конфиг. Как уже писал, отключил его, зависаний нет, а значит и проблема где-то в нём, но возможно только на 7ке. Буду пробовать другие настройки, может всё таки в них дело.

esetnod, спасиб, покручу.

pupseg
На сайте с 14.05.2010
Offline
347
#7
Dimanych:
pupseg, съехать на 5.6 не получится, клиенты не простят внезапный откат PHP версии)

Хостинг? тогда протестировать на тестовом сервере прежде чем ...

L
На сайте с 10.02.2015
Offline
222
#8
Dimanych:
У кого нагруженные сервера (LA до 10) и php желательно 7 и обязательно с opcache скиньте конфиг.

Нету конфигов на все случаи.

Кому-то от параметра будет хорошо, кому-то - плохо.

Покажите вывод phpinfo();

PHP - модуль апача?

Почему не nginx?

Может файлы часто меняются и наступает блокировка кеша Opcache?

---------- Добавлено 01.10.2016 в 00:14 ----------

Какой именно php7?

Уже есть 7.0.11

Andreyka
На сайте с 19.02.2005
Offline
822
#9

mod_ruid2 заменяет itk, пробуйте

Не стоит плодить сущности без необходимости
D
На сайте с 05.06.2007
Offline
155
#10

pupseg просто зачем мне тестировать 5.6, даже если и работает нормально, проблема то только с 7.0, 5.6 у нас также запущены много где без opcache правда.

livetv просто думается что мои opcache настройки как то перекруччены или недокручены. nginx frontend, апач нужен из-за htaccess. php 7.0.10, сегодня обновим на последний, правда как уже сказал opcache отключен и тестировать на этих падениях часто не хочется, надо поднимать пустую машину...

>> Может файлы часто меняются и наступает блокировка кеша Opcache?

Это не понял, php файлы часто меняются? Врядли...

Andreyka, по ruid2 говорят он ещё менее безопасен чем itk. Вот например нашёл такой комментарий о том как он работает, и откровенно говоря в шоке :) Возможно есть какие то патчи конечно.

>> Из принципа работы - при отфорке процесса даем ему capabilities CAP_SETGID и CAP_SETGID (то есть, работая от обычного пользователя он получает возможность менять себе uid/gid, как пожелает) и если следующий запрос идет к другому сайту (точнее - сайту принадлежащему другому пользователю), с чистой совестью меняем uid / gid на него и продолжаем обработку.

Т.е. с небольшой хитростью и лёгкостью я верну себу рут или любые другие права.

А в целом не думаю что проблема в модуле апача, ведь висит всё дело на opcache, а как он связан с апачем? Как уже писал, на точно таком же апаче круятся php5.6 и даже 5.3, без каких либо проблем.

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий