web-dev-qa-db-fra.com

Apache2CTL: 87: Ulimit: limite de réglage des erreurs (opération non autorisée)

Le serveur fonctionne bien - ou au moins il semble - mais il y a toujours l'erreur suivante:

Apache2/usr/sbin/Apache2ctl: 87: ulimit: error setting limit (Operation not permitted)

Cela se produit avec Apache 2.2.22-9 sur Debian Wheezy.

# Apache2ctl configtest

/ usr/sbin/apache2ctl: 87: ulimit: limite de réglage des erreurs (opération non autorisée)
Syntaxe OK

# service Apache2 reload

[....] Rechargement de Web Server Config: Apache2/USR/SBIN/APACHE2CTL: 87: Ulimit: limite de réglage des erreurs (opération non autorisée)
. d'accord

# service Apache2 restart

[....] Redémarrage du serveur Web: Apache2/USR/SBIN/APACHE2CTL: 87: Ulimit: limite de réglage des erreurs (opération non autorisée)
[.____] ... WAVE/USR/SBIN/APACHE2CTL: 87: Ulimit: Limite de réglage des erreurs (opération non autorisée)
. d'accord

# service Apache2 status

Apache2 est en cours d'exécution (PID 32045).

12
Pascal Polleunus

Le problème provient de/usr/sbin/apache2ctl (sur Debian). Vérifiez-le:

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

Ici, il définit le nombre de fichiers ouverts autorisés à 8192. Ou essayer et échouer, dans votre cas.

Donc, pour éviter d'obtenir une erreur lorsque Apache2CTL le fait, ajustez les paramètres de votre système dans le fichier /etc/security/limits.conf en ajoutant ces deux lignes:

*               soft    nofile          8192
*               hard    nofile          8192

Je ne l'ai pas augmenté à plus que nécessaire (8192) parce que je ne sais pas ce que cela aura sur l'autre. Cependant, cela se débarrasse de l'avertissement.

Je ne sais pas si vous aurez besoin de redémarrer votre système après cela, car il y a un élément dynamique aux ulimits que je ne connais pas. Cependant, vous pouvez tester suffisamment facilement pour déterminer quel est votre nombre actuel de fichiers Ulimit:

ulimit -n

Vous voudrez peut-être lire où je l'ai trouvé: Stackoverflow - Réglage ulimit

6
Adam

1.Check et modifier la valeur de ulimit dans votre machine hôte. Ajoutez les valeurs dans le fichier /etc/profil puis faites-la prendre effet.

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 tu peux:

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

2.Restartez le service Docker et rendez la configuration à être efficace.

Sudo service docker restart

3.test l'ulimit dans le conteneur.

ulimit -n

Ceci est mon résultat de test!

Conseils: Peut-être que vous pouvez également essayer la commande ci-dessous (prérequis: ulimit dans la machine hôte doit être supérieure à 8192), mais i a échoué .

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