• [^] # Fuite mémoire JBoss

    Posté par . En réponse au message Raisons susceptibles du déclenchement d'OOM killer. Évalué à 3.

    Je confirme qu'il ne faut pas chercher une explication niveau système, hardware ou autre lié à Red Hat.

    Il s'agit très probablement bel et bien du serveur d'appli qui est fautif.

    Une de vos applis sous JBoss provoque des fuites mémoires.

    D'ailleurs si vous monitorez la mémoire prise par JBoss (par un simple top par exemple), vous verrez certainement la mémoire prise par celui allant en augmentant au fil du temps et de l'utilisation de l'appli fautive.
    Et effectivement, une fois la RAM pleine, le Swap sera attaqué à son tour par JBoss sans jamais diminuer jusqu'à atteindre sa limite.
    A ce moment, le kernel ne se posera plus de questions pour préserver la survie du système et fera le ménage en killant ce qui monopolise la mémoire.

    Donc c'est bien au niveau des applis java sous JBoss qu'il faut investiguer.


    Maintenant il ne s'agit pas nécessairement d'un problème d'objets mal gérés dont le Garbage Collector n'arriverait pas à se débarrasser. Car dans ce cas, théoriquement, vous finiriez par avoir des OutOfMemory Exceptions, et jamais ça ne dépasserait le cadre de la mémoire allouée à la JVM. Tout ce que vous auriez dans ces cas la, c'est un comportement instable de vos applis.


    Le problème est donc plus "profond" et plus vicieux, car de la mémoire hors JVM est allouée et n'est jamais libérée.

    Ca n'est pas particulièrement facile à diagnostiquer (bon courage d'ailleurs) mais ça peut être lié au système tout de même notamment dans la façon dont Java va interagir avec.

    En gros, voyez si vos problèmes ne sont pas liés avec les points suivants (en vrac):
    - mauvaise gestion de stream (ex: un InputStream ou OutputStream ouvert mais non fermé)
    - par extension mauvaise manipulation de fichiers (ex: dans le cas d'un upload d'un fichier envoyé par un formulaire Multipart/form)
    - mauvaise gestion des transactions avec la base de données (resultsets ouverts mais non fermés).
    - ça peut dépendre encore du type d'interaction que vous avez avec ce File System OCSF2.
    - Enfin essayez de mettre à jour vos librairies (.jar) voir si le problème se produit toujours.