Вопрос: apache2ctl: 87: ulimit: ограничение установки ошибки (операция не разрешена)


Сервер работает нормально - или, по крайней мере, кажется, - но всегда есть следующая ошибка:

apache2/usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)

Это происходит с Apache 2.2.22-9 на Debian Wheezy.

# apache2ctl configtest

/ usr / sbin / apache2ctl: 87: ulimit: ограничение на установку ошибок (операция не разрешена)
  Синтаксис ОК

# service apache2 reload

[....] Перезагрузка конфигурации веб-сервера: apache2 / usr / sbin / apache2ctl: 87: ulimit: ограничение на установку ошибок (операция не разрешена)
  , ОК

# service apache2 restart

[....] Перезапуск веб-сервера: apache2 / usr / sbin / apache2ctl: 87: ulimit: ограничение на установку ошибок (операция не разрешена)
   ... Ожидание / usr / sbin / apache2ctl: 87: ulimit: ограничение установки ошибки (операция не разрешена)
  , ОК

# service apache2 status

Apache2 работает (pid 32045).


12
2017-08-05 12:02


Источник


Посмотрите, что у вас есть в /etc/security/limits.conf и /etc/security/limits.d. Кажется, у вас есть APACHE_ULIMIT_MAX_FILES (см. Его в / usr / sbin / apache2ctl) переменную, установленную на нечто большее, чем предел в этих файлах. - HUB


Ответы:


Это может помочь: - http://ubuntuforums.org/showthread.php?p=11950245#post11950245

sudo service apache2 restart # no errors
service apache2 restart      # errors

16
2017-08-09 10:59



Спасибо, я уже это видел, но это не помогает. Использование sudo или нет ничего не меняет, у меня такая же ошибка. - Pascal Polleunus
Работал для меня! Полностью забыл sudo, - ThomasReggi
+1 магия sudo всегда делает трюк - bicycle
даже хуже, у меня есть установка докеров, где это происходит, работает на моем домашнем компьютере, но не на сервере .. в контейнере без разницы между ними ... не имеет смысла для меня - superhero


Проблема связана с / usr / sbin / apache2ctl (на Debian). Проверьте это:

~$ grep ULIMIT /usr/sbin/apache2ctl
ULIMIT_MAX_FILES="${APACHE_ULIMIT_MAX_FILES:-ulimit -n 8192}"
if [ "x$ULIMIT_MAX_FILES" != "x" ] ; then
    $ULIMIT_MAX_FILES

Здесь он устанавливает количество открытых файлов, разрешенных для 8192. Или пытается и не удается в вашем случае.

Поэтому, чтобы избежать ошибки, когда apache2ctl делает это, настройте параметры вашей системы в файле /etc/security/limits.conf, добавив эти две строки:

*               soft    nofile          8192
*               hard    nofile          8192

Я не увеличил его до более чем необходимого (8192), потому что я не знаю, что еще это повлияет. Однако это избавляет от предупреждения.

Не уверен, что вам нужно будет перезагрузить систему после этого, потому что есть динамический элемент для ulimits, с которым я не знаком. Однако вы можете проверить достаточно легко, чтобы узнать, что представляет собой текущее количество файлов ulimit:

ulimit -n

Возможно, вы захотите прочитать, где я его нашел: stackoverflow - установка ulimit


4
2018-02-11 12:10



Как мне сделать обратное и уменьшить лимит Apache? - Elric
Увидев, что сценарий, который я отправил в ответ, прямо из сценария apache2ctl, установленного apache, тогда вам придется перейти к этому файлу скрипта и изменить его, если у вас есть право доступа и предполагается, что вы готовы повторить действие с каждым обновлением Apache. - Adam


1.Проверьте и измените значение ULIMIT в вашей главной машине. Добавьте значения в файл / И т.д. / профиль затем заставьте его вступить в силу.

ulimit -u 10240
ulimit -n 8192     #This configuration is what we most needed
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited

source /etc/profile

или вы можете:

sudo sh -c 'printf "\nulimit -HSn 999999\n" >> /etc/sysconfig/docker'

2. Перезагрузите службу докеров и сделайте конфигурацию эффективной.

sudo service docker restart

3. Испытайте ulimit в контейнере.

ulimit -n

Это мой результат теста!

Советы. Возможно, вы также можете попробовать выполнить команду, как показано ниже (предварительное условие: ulimit на главной машине должен быть больше 8192), но Я провалился,

docker run --privileged -it -p xxxx:80 --ulimit data=8192 linode/lamp /bin/bash

1
2018-06-13 09:33