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:
- Trouver le nombre de fichiers ouverts utilisés actuellement, à l'échelle du système et par utilisateur
- 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:
- 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?
- 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é?
- 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.
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
Vous devez vous connecter pour publier un commentaire.
Il n'est pas par utilisateur limite de fichier. Celles-vous besoin d'être conscient de l'échelle du système et par processus. Les fichiers-par-limite de processus multiplié par le processus par utilisateur limite on pourrait en théorie fournir un fichiers-par-limite de l'utilisateur, mais avec des valeurs normales, le produit est si grande qu'elle est illimitée.
Aussi, l'objectif initial de lsof était à la Liste des Fichiers Ouverts, mais il a grandi et les listes d'autres choses maintenant, comme la mdc et mmap régions, ce qui est une autre raison pour qu'il sortie plus de lignes que vous attendez.
Le message d'erreur "Too many open files" est associée avec la valeur de errno
EMFILE
, la limite de processus, qui, dans votre cas semble être de 1024. Si vous pouvez trouver les bonnes options pour limiter lsof juste de l'affichage réel des descripteurs de fichiers d'un processus unique, vous trouverez probablement qu'il y a 1024, ou quelque chose de très proche.À l'échelle du système limite de descripteur de fichier a rarement besoin d'être ajusté manuellement ces jours-ci, depuis son par défaut la valeur est proportionnelle à la mémoire. Si vous avez besoin, vous pouvez le trouver à
/proc/sys/fs/file-max
et d'informations sur l'utilisation actuelle à/proc/sys/fs/file-nr
. Votre fichier sysctl a une valeur de4096
pourfile-max
, mais il est commenté de sorte que vous ne devriez pas le prendre au sérieux.Si jamais vous parvenez à frapper à l'échelle du système limite, vous aurez errno
ENFILE
, qui se traduit par le message d'erreur "Fichier de la table de débordement" ou "Trop de fichiers ouverts dans le système".P. S. j'ai peut-être amené à vous demander quelles sont les options pour lsof-je utiliser si je ne peux pas le comprendre.
OriginalL'auteur Wumpus Q. Wumbley