Si trop de fichiers sont ouverts sur un système, des erreurs peuvent survenir, ne permettant pas de faire aboutir l'ouverture d'une base de données, l'appel à une URL... Il faut donc s'assurer que ce nombre reste en dessous du seuil maximum.
L'utilitaire sysctl affiche les paramètres du système d'exploitation. La variable file-max indique le nombre maximum de fichiers ouvrables par tous les process.
L'utilitaire ulimit affiche les limites définies par process. Le champ "open files" contient le nombre maximum de fichiers ouvrables par process.
L'utilitaire lsof affiche des détails sur les fichiers ouverts. En comptant le nombre de lignes de la réponse, on obtient le nombre de fichiers ouverts.
Cette ligne de commande affiche en continu, avec une pause de 10 secondes, le nombre de fichiers ouverts par chaque process Java. S'il y a plusieurs process Java, cela crée autant de colonnes correspondantes :
Si l'utilitaire lsof n'est pas disponible, il peut être remplacé par la commande suivante qui renvoie sensiblement les mêmes valeurs :
Affiche les 10 fichiers ouverts les plus volumineux, triés par ordre décroissant de taille, à l'exclusion des fichiers effacés :
Ajouter "-u utilisateur" après lsof pour limiter l'exécution aux fichiers d'un utilisateur spécifique.
Ce script est testable en simulant un fichier ouvert (redirection de la sortie dans un fichier un fichier puis augmentation de sa taille jusqu'à 200 mégaoctets) :
En guise de fin, voici un script affichant les fichiers ouverts par les processus Java : il récupère le nombre maximal de fichiers ouvrables et le compare à tous les processus Java ouverts : verifie_fichiers_ouverts.sh(1 Ko)
Il peut bien sûr être adapté à n'importe quel processus autre que Java.
RSS | Informations |