apache2ctl: 87: ulimit: межа встановлення помилок (експлуатація не дозволена)


12

Сервер працює нормально - або, принаймні, здається, - але завжди є така помилка:

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).


1
Погляньте, що у вас є в /etc/security/limits.conf та /etc/security/limits.d. Здається, що у вас змінна APACHE_ULIMIT_MAX_FILES (див. Її в / usr / sbin / apache2ctl) змінна на щось більше, ніж межа у цих файлах.
HUB

Відповіді:


16

Це може допомогти: - http://ubuntuforums.org/showthread.php?p=11950245#post11950245

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

Дякую, я вже бачив це, але це не допомагає. Використовуючи sudo чи не нічого не змінюється, у мене така ж помилка.
Паскаль Полленус

1
Працювали для мене! Повністю забув sudo.
ThomasReggi

2
+1 магія sudoзавжди робить трюк
велосипед

Найгірше, у мене встановлення докера, де це відбувається, працює на моєму домашньому комп’ютері, але не на сервері .. в контейнері між ними немає різниці ... для мене немає сенсу
супергерой

Тут же супергерой. Крім того, перезапуск не працює з судо або без мене. Мені доводиться використовувати стоп, а потім починати без судо, щоб він працював.
Шардж,

5

Проблема випливає з / 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), тому що не знаю, на що це вплине. Однак це позбавляється від попередження.

Не впевнений, чи доведеться вам перезавантажувати систему після цього, тому що є динамічний елемент до умілів, з якими я не знайомий. Однак ви можете досить легко протестувати, щоб дізнатися, яка ваша поточна необмежена кількість файлів:

ulimit -n

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


Як би я зробив реверс і зменшив межу Apache?
eri0o

Побачивши, що сценарій, який я розмістив у відповіді, безпосередньо виходить із скрипта apache2ctl, встановленого apache, тоді вам доведеться перейти до цього файлу сценарію та змінити його, припускаючи, що у вас є право доступу та припускаючи, що ви готові повторити дії з кожним оновленням Apache.
Адам

2

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

$ ulimit -n 8192дарує мені-bash: ulimit: open files: cannot modify limit: Operation not permitted
Шардж,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.