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: ограничение установки ошибки (операция не разрешена)
  Синтаксис OK

# service apache2 reload

  

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

# service apache2 restart

  

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

# service apache2 status

  

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

12 голосов | спросил Pascal Polleunus 5 PM00000040000000431 2012, 16:02:04

3 ответа


16

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

sudo service apache2 restart # no errors
service apache2 restart      # errors
ответил Mukesh Chapagain 9 PM00000020000004531 2012, 14:59:45
4

Проблема связана с /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

ответил Adam 11 FebruaryEurope/MoscowbTue, 11 Feb 2014 16:10:16 +0400000000pmTue, 11 Feb 2014 16:10:16 +040014 2014, 16:10:16
1

1.Проверьте и измените значение ulimit на хост-машине. Добавьте значения в файл /etc /profile , затем вставьте его в действие.

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 -n

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

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

docker run --privileged -it -p xxxx:80 --ulimit data=8192 linode/lamp /bin/bash
ответил user3772170 13 J0000006Europe/Moscow 2017, 12:33:49

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132