apache2ctl: 87: ulimit: limite de configuração de erro (operação não permitida)

12

O servidor está funcionando bem - ou pelo menos parece - mas sempre há o seguinte erro:

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

Isso acontece com o Apache 2.2.22-9 no Debian Wheezy.

# apache2ctl configtest

/ usr / sbin / apache2ctl: 87: ulimit: limite de configuração de erro (operação não permitida)
Sintaxe OK

# service apache2 reload

[....] Recarregando a configuração do servidor web: apache2 / usr / sbin / apache2ctl: 87: ulimit: limite de configuração de erro (operação não permitida)
. Está bem

# service apache2 restart

[....] Reiniciando o servidor da Web: apache2 / usr / sbin / apache2ctl: 87: ulimit: limite de configuração de erro (operação não permitida)
... aguardando / usr / sbin / apache2ctl: 87: ulimit: limite de configuração de erro (operação não permitido)
. Está bem

# service apache2 status

O Apache2 está em execução (pid 32045).

Pascal Polleunus
fonte
1
Dê uma olhada no que você tem em /etc/security/limits.conf e /etc/security/limits.d. Parece que você tem a variável APACHE_ULIMIT_MAX_FILES (veja em / usr / sbin / apache2ctl) definida como algo maior que o limite nesses arquivos.
HUB

Respostas:

16

Isso pode ajudar: - http://ubuntuforums.org/showthread.php?p=11950245#post11950245

sudo service apache2 restart # no errors
service apache2 restart      # errors
Mukesh Chapagain
fonte
Obrigado, eu já vi isso, mas não ajuda. Usar o sudo ou não não muda nada, tenho o mesmo erro.
Pascal Polleunus
1
Trabalhou para mim! Esqueci completamente sudo.
ThomasReggi
2
+1 mágica sudosempre faz o truque
bicycle
ainda pior, eu tenho configuração janela de encaixe onde esta é appering, funciona no meu computador de casa, mas não no servidor .. no recipiente sem diferença entre eles ... não faz sentido para mim
super-herói
5

O problema decorre de / usr / sbin / apache2ctl (no Debian). Confira:

~$ 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

Aqui está configurando o número de arquivos abertos permitidos para 8192. Ou tentando e falhando, no seu caso.

Portanto, para evitar erros quando o apache2ctl fizer isso, ajuste as configurações do sistema no arquivo /etc/security/limits.conf adicionando estas duas linhas:

*               soft    nofile          8192
*               hard    nofile          8192

Não a ampliei para mais do que o necessário (8192) porque não sei mais o que isso afetará. No entanto, isso se livra do aviso.

Não tenho certeza se você precisará reiniciar o sistema depois disso, porque há um elemento dinâmico nos ulimits com os quais não estou familiarizado. No entanto, você pode testar com facilidade o suficiente para descobrir qual é o número final de arquivos atual:

ulimit -n

Você pode querer ler onde eu o encontrei: stackoverflow - setting ulimit

Adão
fonte
Como eu faria o inverso e reduziria o limite do Apache?
eri0o
Vendo que o script que eu postei na resposta é direto do script apache2ctl que é instalado pelo apache, você precisará ir para esse arquivo de script e alterá-lo, assumindo que você tem o acesso certo e assumindo que deseja repetir a ação a cada atualização do Apache.
Adam
2

1. Verifique e modifique o valor de ulimit na sua máquina host. Adicione os valores no arquivo / etc / profile e faça com que ele entre em vigor.

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

ou você pode:

sudo sh -c 'printf "\nulimit -HSn 999999\n" >> /etc/sysconfig/docker'

2.Reinicie o serviço docker e faça com que a configuração seja eficaz.

sudo service docker restart

3.Teste o ulimit no recipiente.

ulimit -n

Este é o resultado do meu teste!

Dicas: Talvez você também possa tentar o comando abaixo (pré-requisito: ulimit na máquina host deve ser maior que 8192), mas falhei .

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