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

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

服务器运行良好——或至少看上去如此——但总是出现以下错误:

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 服务器配置: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)。

答案1

这可能会有所帮助:-http://ubuntuforums.org/showthread.php?p=11950245#post11950245

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

答案2

问题源于 /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

答案3

1.检查并修改限制在主机中。在文件中添加值/etc/配置文件然后使其生效。

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服务,使配置生效。

sudo service docker restart

3.测试容器内的ulimit。

ulimit -n

这是我的测试结果!

提示:您也可以尝试以下命令(前提条件:主机中的 ulimit 应大于 8192 ),但我失败了

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

相关内容