61 votes

Impossible d'augmenter la limite de fichiers ouverts au-delà de 4096 (Ubuntu)

Je suis sur Ubuntu 17.04. J'essaie d'augmenter la limite de fichiers ouverts, et aucune des instructions que j'ai trouvées en ligne ne fonctionne. Je peux aller jusqu'à 4096, mais je ne peux pas aller au-delà.

$ ulimit -n
1024
$ ulimit -n 4096
$ ulimit -n
4096

Cela fonctionne. Pas ça :

$ ulimit -n 4097
bash: ulimit: open files: cannot modify limit: Operation not permitted

Il semble que ce soit à cause de la limite dure :

$ ulimit -Hn
4096

J'ai essayé d'ajouter ces lignes au fichier /etc/security/limits.conf :

*                hard    nofile          65535
*                soft    nofile          65535
root             soft    nofile          65535
root             hard    nofile          65535

J'ai également ajouté cette ligne dans /etc/pam.d/common-session et /etc/pam.d/common-session-noninteractive :

session required pam_limits.so

Depuis que j'ai fait ça, j'ai redémarré mon ordinateur. Les modifications apportées à limits.conf ne semblent pas avoir d'incidence. La limite dure est toujours bloquée à 4096, ce qui m'empêche d'aller plus loin. Comment augmenter ma limite de fichiers ouverts ?


Voici quelques informations supplémentaires sur la configuration :

$ cat /proc/sys/fs/file-max 
1624668

100voto

mkasberg Points 2283

OK, j'ai enfin trouvé la solution. Les limites que je fixais dans /etc/security/limits.conf étaient effectivement appliquées, mais pas à la connexion graphique . Ceci peut être vérifié à partir d'une fenêtre de terminal :

$ ulimit -n
4096
$ su mkasberg
Password:
$ ulimit -n
65535

Plus de recherches m'ont conduit à ceci rapport de bogue ce qui m'a mis sur la bonne voie. Afin de modifier la limite qui est utilisée par le login Shell, nous devons ajouter la ligne suivante à /etc/systemd/user.conf :

DefaultLimitNOFILE=65535

Cette modification fonctionne, mais n'affecte que la limite souple. (Ce qui nous laisse avec une limite stricte de 4096.) Afin d'affecter la limite stricte, nous devons modifier les paramètres suivants /etc/systemd/system.conf avec les mêmes changements.

Les changements que j'ai faits dans /etc/pam.d n'étaient pas nécessairement ; cela fonctionne déjà, du moins sur Ubuntu. Aussi, il n'était pas nécessaire d'ajouter les lignes root y * en limits.conf ; l'ajout du nom d'utilisateur seul ( mkasberg dans mon cas) était suffisant.


En résumé

Si vous voulez augmenter la limite indiquée par ulimit -n vous devriez :

  • Modifier /etc/systemd/user.conf y /etc/systemd/system.conf avec la ligne suivante (cela prend en charge la connexion graphique) :

     DefaultLimitNOFILE=65535
  • Modifier /etc/security/limits.conf avec les lignes suivantes (ceci prend en charge la connexion non-GUI) :

     mkasberg hard nofile 65535
     mkasberg soft nofile 65535
  • Redémarrez votre ordinateur pour que les modifications soient prises en compte.

20voto

Marc.2377 Points 1371

Il n'est pas nécessaire de modifier quoi que ce soit dans le /etc/security/limits.conf il est ignoré si vous utilisez systemd.

(reproduisant une version modifiée réponse à une autre question sur le réseau...)

Une alternative pour ceux qui préfèrent ne pas modifier l'option par défaut /etc/systemd/system.conf y /etc/systemd/user/conf des fichiers :

  1. créer un nouveau fichier /etc/systemd/system.conf.d/limits.conf avec ces contenus :

    [Manager]
    DefaultLimitNOFILE=65535
  2. exécuter systemctl daemon-reexec en tant que racine

  3. se déconnecter et se reconnecter

  4. vérifier votre nouvelle limite avec ulimit -n .

Reportez-vous à la systemd-system.conf page d'accueil pour les détails.

4voto

U.V. Points 211

TL;DR J'ai ressenti le besoin de concentrer les réponses, afin qu'elles soient plus faciles à trouver. J'ai mis du temps à rassembler toutes les pièces pour que ça fonctionne correctement...

Il y a deux endroits à considérer.

  1. Session GUI

    $ grep DefaultLimitNOFILE /etc/systemd/system.conf
    DefaultLimitNOFILE=65535

    ou mieux ici :

    $ grep NOFILE /etc/systemd/system.conf.d/limits.conf
    DefaultLimitNOFILE=65535
  2. Shell.

    $ grep nofile /etc/security/limits.conf
    user soft nofile 65535
    user hard nofile 65535`

    ou mieux ici :

    $ grep nofile /etc/security/limits.d/user.conf
    user soft nofile 65535
    user hard nofile 65535
  3. Après avoir modifié les paramètres dans les fichiers ci-dessus, redémarrer et ensuite vérifier les limites avec : ulimit -n -Hn -Sn

3voto

Matthew Ma Points 31
  1. éditer /etc/systemd/system/sonar.service

  2. ajoutez ces deux lignes sous Service

[Service]

LimitMEMLOCK=infini

LimitNOFILE=65535

  1. systemctl daemon-reload
  2. systemctl restart sonar

cela fonctionne pour moi.

2voto

Paresh Chauhan Points 174

En utilisant Ubuntu 17.04, j'ai obtenu la limite dure décrite :

user@paresh.com:~$ ulimit -Hn
4096

Je pourrais le baisser en utilisant ulimit mais pas l'augmenter, comme le décrit la question. ulimit Le manuel décrit :

seul root peut augmenter la limite dure.

J'ai donc essayé de fixer une limite plus élevée dans /etc/security/limits.conf comme ça :

user hard nofile 9999

et un nouveau login comme ssh localhost -l user m'a donné la nouvelle limite :

user@paresh.com:~$ ulimit -Hn
9999

J'espère que cela fonctionnera pour vous aussi.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X