Задать вопрос

Как увеличить php stack size (>8192)?

имеется связка ubuntu 14.04 + nginx (openresty) + php-fpm
памяти 32 gb
требуется увеличить pcre.recursion_limit, а соответственно дефолтного стэка не хватает на тяжелые pcre.

Допустим, php воркеры работают от юзера phpuser

Приступим:
/etc/security/limits.conf
phpuser - stack -1
root - stack -1

// -1 = unlimited

~ # su phpuser --shell /bin/bash --command "ulimit -s"
unlimited


Всё ок.
service php5-fpm restart

<?php 
echo shell_exec('ulimit -s'); 
// 8192
?>

Ну и соответственно глубокие и тяжелые preg_ валятся в сегфолт

WTF, господа, кто знает? Почему php не цепляет размер стэка?
  • Вопрос задан
  • 5245 просмотров
Подписаться 4 Оценить Комментировать
Решения вопроса 1
NaN
@NaN Автор вопроса
Ребят!
recursion_limit - это не размер стэка.
php.net/manual/ru/pcre.configuration.php
---
Решение пока такое:
у Элбек Азимов: на Debian
limits.conf
* - stack -1
@* - stack -1
&
добавьте в конце файла /etc/pam.d/common-session
session required pam_limits.so
----

У меня: Ubuntu 14.04 Lts 64 minimal
через /etc/init.d/php5-fpm
Закомментировал секцию if init_is_upstart;
Добавил в do_start()
ulimit -s unlimited
удалил старый update-rc.d -f php5-fpm remove
удалил /etc/init/php5-fpm.conf
обновил update-rc.d php5-fpm defaults
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
antonio1107
@antonio1107
Заместитель руководителя
В версии php > 7.0 отключите pcre.jit=0 и заработает.
По умолчанию включён pcre.jit=1
Ответ написан
He11ion
@He11ion
PHP-monkey
cat /etc/php.ini | grep recursion_limit
пробовали?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы