Comment puis-je changer le nombre limite de fichiers ouverts sous Linux? [fermé]
lors de l'exécution de mon application j'obtiens parfois une erreur à propos de too many files open
.
Running ulimit -a
indique que la limite est 1024. Comment augmenter la limite au-delà de 1024?
Modifier
ulimit -n 2048
se traduit par une erreur de permission.
4 réponses
Vous pouvez toujours essayer de faire un ulimit -n 2048
. Cela va seulement réinitialiser la limite pour votre shell actuel et le nombre que vous spécifiez ne doit pas dépasser la limite dure
chaque système d'exploitation a une configuration de limite dure différente dans un fichier de configuration. Par exemple, la limite des fichiers ouverts sur Solaris peut être définie sur boot à partir de /etc/system.
set rlim_fd_max = 166384
set rlim_fd_cur = 8192
sur OS X, ces mêmes données doivent être définies dans /etc/sysctl.conf.
kern.maxfilesperproc=166384
kern.maxfiles=8192
sous Linux, ces paramètres sont souvent dans /etc/security/limits.conf.
il y a deux types de limites:
- doux limites sont simplement actuellement en vigueur limites
- dur les limites de marquer le maximum de valeur qui ne peut être dépassé par la définition d'une limite douce
Doux limites peuvent être définies par tout utilisateur alors que les limites de sont changeables seulement par Racine. Les limites sont une propriété d'un processus. Elles sont héritées lors de la création d'un processus enfant, de sorte que des limites globales doivent être définies lors de l'initialisation du système dans les scripts d'initialisation et que les limites de l'utilisateur doivent être définies lors de la connexion de l'utilisateur, par exemple en utilisant pam_limits.
il y a souvent des valeurs par défaut définies lorsque la machine démarre. Donc, même si vous pouvez réinitialiser votre ulimit dans un shell individuel, vous pouvez trouver qu'il se réinitialise à la valeur précédente lors du redémarrage. Vous pouvez grep vos scripts d'amorçage pour les commandes ulimit d'existence si vous voulez changer la valeur par défaut.
si vous utilisez Linux et que vous avez obtenu l'erreur de permission, vous devrez augmenter la limite permise dans le fichier /etc/limits.conf
ou /etc/security/limits.conf
(où le fichier est situé dépend de votre distribution Linux spécifique).
par exemple pour permettre à n'importe qui sur la machine d'augmenter leur nombre de dossiers ouverts jusqu'à 10000 ajouter la ligne au dossier limits.conf
.
* hard nofile 10000
puis Déconnexion et relogin à votre système et vous devriez pouvoir faire:
ulimit -n 10000
sans erreur de permission.
1) Ajouter la ligne suivante à /etc/security/limits.conf
webuser hard nofile 64000
puis se connecter en tant que webuser
su - webuser
2) éditer les deux fichiers suivants pour webuser
ajouter .bashrc et .bash_profile fichier en cours d'exécution
echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile
3) déconnecter, puis se connecter de nouveau et vérifier que les changements ont été faits correctement:
$ ulimit -a | grep open
open files (-n) 64000
c'est ça et boum, boom boom.
si certains de vos services sont bloqués dans ulimits, il est parfois plus facile de mettre des commandes appropriées dans le script d'initialisation de service. Par exemple, quand Apache déclare
[alerte] (11 Ressource temporairement non disponible: apr_thread_create: impossible de créer le thread de travail
essayez de mettre ulimit -s unlimited
dans /etc/init.d/httpd
. Cela ne nécessite pas un redémarrage du serveur.