apache2ctl:87:ulimit:错误设置限制(操作不允许)

服务器运行良好 – 或者至less它似乎 – 但总是有以下错误:

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

它发生在Debian Wheezy上的Apache 2.2.22-9上。

# apache2ctl configtest

/ usr / sbin / apache2ctl:87:ulimit:错误设置限制(操作不允许)
语法OK

# service apache2 reload

重新加载Web服务器configuration:apache2 / usr / sbin / apache2ctl:87:ulimit:错误设置限制(操作不允许)
。 好

# service apache2 restart

[….]重新启动Web服务器: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),因为我不知道它会影响到什么。 然而,这摆脱了警告。

不知道你是否需要重新启动系统后,因为有一个dynamic的元素ulimits我不熟悉。 但是,你可以很容易地testing,找出你目前的ulimit文件是什么:

 ulimit -n 

您可能想要阅读我在哪里find它: 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.重新启动docker服务并使configuration生效。

 sudo service docker restart 

3.testing容器中的ulimit。

 ulimit -n 

这是我的testing结果!

提示:也许你也可以尝试下面的命令(先决条件:主机中的ulimit应该大于8192),但我失败了

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