Je n'arrive pas à augmenter la limite nofile
pour les utilisateurs non root sur Ubuntu 14.04, malgré le suivi de chaque réponse StackExchange liée à ce problème. Jusqu'à présent j'ai:
$ cat /etc/security/limits.d/custom.conf
@www-data hard nofile 50000
@www-data soft nofile 50000
# even tried specifying the username directly:
myuser hard nofile 50000
myuser soft nofile 50000
$ grep 'limits' /etc/pam.d/common-session*
/etc/pam.d/common-session:session required pam_limits.so
/etc/pam.d/common-session-noninteractive:session required pam_limits.so
$ cat /proc/sys/fs/file-max
101232
Redémarré, connecté et:
$ ulimit -n 4097
-bash: ulimit: open files: cannot modify limit: Operation not permitted
Là encore semble être en quelque sorte une limite de 4096 max pour les utilisateurs non root.
En utilisant Ubuntu 14.04, j'ai obtenu la limite stricte décrite:
user@notebook:~$ ulimit -Hn 4096
Je pourrais l'abaisser avec ulimit, mais pas l'augmenter, comme le dit la question. Comme le décrit le manuel de ulimit:
seule la racine peut augmenter la limite dure
J'ai donc essayé de définir une limite supérieure dans /etc/security/limits.conf
comme ceci:
user hard nofile 9999
et un nouveau login comme ssh localhost -l user
m'a donné la nouvelle limite:
user@notebook:~$ ulimit -Hn 9999
J'espère que cela fonctionne pour vous aussi.
This article , je pense que cela règle votre problème.
En principe, vous devez utiliser la commande ulimit pour augmenter les ressources disponibles.
Par exemple:
Utilisez la commande suivante pour afficher le nombre maximal de descripteurs de fichier ouverts:
cat /proc/sys/fs/file-max
Pour voir les valeurs ferme et souple, lancez la commande comme suit:
# ulimit -Hn
# ulimit -Sn
Pour voir les valeurs matérielles et variables de l'utilisateur httpd ou Oracle, lancez la commande comme suit:
# su - username
Pour fixer le nombre maximal de fichiers, vous pouvez augmenter le nombre maximal de fichiers ouverts en définissant une nouvelle valeur dans la variable du noyau/proc/sys/fs/file-max comme suit (identifiez-vous à la racine):
# sysctl -w fs.file-max=100000
La commande ci-dessus force la limite à 100 000 fichiers. Vous devez éditer le fichier /etc/sysctl.conf
et mettre la ligne suivante afin que, après le redémarrage, le paramètre reste tel quel. Pour ce faire, ajoutez une directive de configuration comme suit:
fs.file-max = 100000
Enregistrez et fermez le fichier. Les utilisateurs doivent se déconnecter et se reconnecter pour que les modifications prennent effet ou il suffit de taper la commande suivante:
# sysctl -p
Vérifiez vos paramètres avec la commande:
# cat /proc/sys/fs/file-max
ou:
# sysctl fs.file-max
La procédure ci-dessus définit les limites des descripteurs de fichiers (FD) au niveau du système. Toutefois, vous pouvez limiter l'utilisateur httpd
(ou tout autre utilisateur) à des limites spécifiques en modifiant le fichier /etc/security/limits.conf
en modifiant /etc/security/limits.conf
, puis définissez-les comme suit:
httpd soft nofile 4096
httpd hard nofile 10240
Puis vérifiez-les en:
# su - httpd
$ ulimit -Hn
$ ulimit -Sn
Si le problème se pose sur d'autres distributions Linux, vérifiez le /etc/pam.d/login
et assurez-vous que vous avez activé pam_limits.so
, par exemple.
session required pam_limits.so
S'il s'agit d'un service, vous pouvez essayer de définir la limite dans /etc/systemd/system/{ServiceName}.service
add LimitNOFILE=65536