apache2ctl: 87: ulimit: limite impostazione errore (Operazione non consentita)


12

Il server funziona correttamente - o almeno sembra - ma c'è sempre il seguente errore:

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

Succede con Apache 2.2.22-9 su Debian Wheezy.

# apache2ctl configtest

/ usr / sbin / apache2ctl: 87: ulimit: limite impostazione errore (Operazione non consentita)
Sintassi OK

# service apache2 reload

[....] Ricarica della configurazione del server web: apache2 / usr / sbin / apache2ctl: 87: ulimit: limite impostazione errore (Operazione non consentita)
. ok

# service apache2 restart

[....] Riavvio del server Web: apache2 / usr / sbin / apache2ctl: 87: ulimit: limite impostazione errore (operazione non consentita)
... in attesa / usr / sbin / apache2ctl: 87: ulimit: limite impostazione errore (operazione non consentito)
. ok

# service apache2 status

Apache2 è in esecuzione (pid 32045).


1
Dai un'occhiata a quello che hai in /etc/security/limits.conf e /etc/security/limits.d. Sembra che tu abbia APACHE_ULIMIT_MAX_FILES (vederlo in / usr / sbin / apache2ctl) impostato su qualcosa di più grande del limite in quei file.
HUB,

Risposte:


16

Questo potrebbe aiutare: - http://ubuntuforums.org/showthread.php?p=11950245#post11950245

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

Grazie, l'ho già visto ma non aiuta. L'uso di sudo o no non cambia nulla, ho lo stesso errore.
Pascal Polleunus,

1
Ha funzionato per me! Totalmente dimenticato sudo.
ThomasReggi,

2
La magia +1 sudofa sempre il trucco
bicicletta l'

anche peggio, ho una finestra mobile configurata dove appare accattivante, funziona sul mio computer di casa, ma non sul server ... nel contenitore senza alcuna differenza tra di loro ... non ha senso per me
supereroe

Lo stesso qui supereroe. Inoltre, il riavvio non funziona con o senza sudo per me. Devo usare stop, quindi avviare senza sudo per farlo funzionare.
Shardj,

5

Il problema deriva da / usr / sbin / apache2ctl (su Debian). Controlla:

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

Qui sta impostando il numero di file aperti consentiti su 8192. O tentando e fallendo, nel tuo caso.

Quindi, per evitare di ricevere un errore quando apache2ctl lo fa, regola le impostazioni del tuo sistema nel file /etc/security/limits.conf aggiungendo queste due righe:

*               soft    nofile          8192
*               hard    nofile          8192

Non l'ho aumentato a più del necessario (8192) perché non so cos'altro avrà un impatto. Tuttavia, questo elimina l'avvertimento.

Non sono sicuro se sarà necessario riavviare il sistema dopo quello, perché c'è un elemento dinamico negli ulimit che non conosco. Tuttavia, puoi provare abbastanza facilmente per scoprire qual è il tuo attuale numero di file ulimit:

ulimit -n

Potresti voler leggere dove l'ho trovato: stackoverflow - setting ulimit


Come farei il contrario e ridurre il limite di Apache?
eri0o

Vedendo che lo script che ho postato nella risposta è direttamente dallo script apache2ctl installato da apache, allora dovrai andare a quel file di script e cambiarlo, supponendo che tu abbia il diritto di accesso e supponendo che tu sia disposto a ripetere l'azione con ogni aggiornamento di Apache.
Adam,

2

1.Controllare e modificare il valore di ulimit nella macchina host. Aggiungi i valori nel file / etc / profile e rendilo effettivo.

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

o puoi:

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

2.Riavviare il servizio docker e rendere effettiva la configurazione.

sudo service docker restart

3.Testare l'ulimit nel contenitore.

ulimit -n

Questo è il mio risultato del test!

Suggerimenti: forse puoi anche provare il comando come sotto (prerequisito: ulimit nella macchina host dovrebbe essere più grande di 8192), ma non ci riesco .

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

$ ulimit -n 8192mi dà-bash: ulimit: open files: cannot modify limit: Operation not permitted
Shardj il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.