Ce sont le nombre de fichiers ouverts pour un utilisateur sur linux et à l'échelle du système pour linux?

Désolé, cette question a plusieurs couches, mais tout accord avec le nombre de fichiers ouverts.

Que je suis un "Trop de fichiers ouverts" message dans mon journal d'application pour l'application que nous développons. Quelqu'un m'a suggéré de:

  1. Trouver le nombre de fichiers ouverts utilisés actuellement, à l'échelle du système et par utilisateur
  2. Trouver la limite pour ouvrir les fichiers du système et l'utilisateur.

J'ai couru ulimit -n et il est retourné à 1024. J'ai également regardé /etc/limits.conf et il n'y a rien de spécial dans ce fichier. /etc/sysctl.conf est pas modifié. Je vais lister le contenu des fichiers ci-dessous. J'ai aussi couru lsof | wc -l, qui a renvoyé le 5000+ lignes (si je suis à l'utiliser correctement).

Donc, mes principales questions sont:

  1. Comment puis-je trouver le nombre de fichiers ouverts autorisées par utilisateur? Est la limite de la nofile de réglage/défini dans /etc/limits.conf? Quel est le défaut que je n'ai pas toucher à /etc/limits.conf?
  2. Comment puis-je trouver le nombre de fichiers ouverts autorisés à l'échelle du système? Est-ce la limite de limites.conf? Quel est le nombre par défaut si les limites.conf n'est pas modifié?
  3. Quel est le nombre qui ulimit retourne pour ouvrir les fichiers? Il dit 1024 mais quand je lance lsof et de compter les lignes, c'est plus de 5000+ si quelque chose n'est pas en cliquant avec moi. Il existe d'autres maladies cardio-métaboliques je devrais courir ou de fichiers à regarder pour obtenir ces limites? Merci d'avance pour votre aide.

Contenu de limites.conf

# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#        - an user name
#        - a group name, with @group syntax
#        - the wildcard *, for default entry
#        - the wildcard %, can be also used with %group syntax,
#                 for maxlogin limit
#
#<type> can have the two values:
#        - "soft" for enforcing the soft limits
#        - "hard" for enforcing hard limits
#
#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open files
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes
#        - as - address space limit (KB)
#        - maxlogins - max number of logins for this user
#        - maxsyslogins - max number of logins on the system
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold
#        - sigpending - max number of pending signals
#        - msgqueue - max memory used by POSIX message queues (bytes)
#        - nice - max nice priority allowed to raise to values: [-20, 19]
#        - rtprio - max realtime priority
#
#<domain>      <type>  <item>         <value>
#

#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

# End of file

Contenu de sysctl.conf

# Controls IP packet forwarding
net.ipv4.ip_forward = 0

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536

# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296

# the interval between the last data packet sent and the first keepalive probe
net.ipv4.tcp_keepalive_time = 600

# the interval between subsequential keepalive probes
net.ipv4.tcp_keepalive_intvl = 60

# the interval between the last data packet sent and the first keepalive probe
net.ipv4.tcp_keepalive_time = 600

# the interval between subsequential keepalive probes
net.ipv4.tcp_keepalive_intvl = 60

# the number of unacknowledged probes to send before considering the connection dead and notifying the application layer
net.ipv4.tcp_keepalive_probes = 10

# the number of unacknowledged probes to send before considering the connection dead and notifying the application layer
net.ipv4.tcp_keepalive_probes = 10

# try as hard as possible not to swap, as safely as possible
vm.swappiness = 1
fs.aio-max-nr = 1048576
#fs.file-max = 4096
Une question à méditer: pourquoi êtes-vous en cours d'exécution hors de fichiers ouverts? Avez-vous vraiment besoin de 1024 fichiers ouverts à la fois, ou vous devez vous assurer que les fichiers sont fermés lorsque vous avez terminé avec eux. Il peut certainement être des motifs légitimes, à besoin d'un grand nombre de fichiers à ouvrir, mais ne pas aller autour de l'augmentation de la limite simplement à court de fichiers après un peu plus de temps parce que vous êtes des fuites de ressources.
merci pour le commentaire. Je suis d'accord, j'ai envie de découvrir qui est le coupable processus de l'est et de l'arrêter. Je vais regarder dans lsof pour voir si je peux trouver que processus.

OriginalL'auteur Classified | 2014-02-24