Сервер работает нормально - или, по крайней мере, так кажется, - но всегда возникает следующая ошибка:
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).
Это может помочь: - http://ubuntuforums.org/showthread.php?p=11950245#post11950245
sudo service apache2 restart # no errors
service apache2 restart # errors
Проблема связана с / 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 -n
Вы можете прочитать, где я это нашел: stackoverflow - установка ulimit
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 в контейнере.
ulimit -n
Советы: Возможно, вы также можете попробовать команду, указанную ниже (предварительное условие: ulimit на хост-машине должен быть больше 8192), но Я потерпел неудачу.
docker run --privileged -it -p xxxx:80 --ulimit data=8192 linode/lamp /bin/bash