un service Java peut-il faire tomber la boîte Unix d’hébergement?

Je vérifiais mon service Java sur un boîtier Redhat Unix, mais je trouvais que le SSH de la boîte ne fonctionnait pas et la SA expliquait que la machine manquait de mémoire et commençait à consumr de l’espace de swap, ce qui

Il a laissé entendre que mon service Java mettait le serveur hors tension, j’ai du mal à croire que cela pourrait être possible – comme je le pense dans le pire des cas, le service lancera une exception OutOfMemory et se bloquera seul.

mon paramètre de mémoire java est: “-Xms1g -Xmx5g” et à partir de / proc / meminfo, la boîte contient

MemTotal: 16304084 kB MemFree: 12288796 kB 

Une deuxième question est, pouvons-nous regarder dans un journal sous / var / log pour savoir quel est le véritable problème?

Vous pouvez regarder dans les archives du journal pour voir si le tueur de mémoire a tué votre ou d’autres processus pendant qu’il manquait de mémoire (mon journal se trouve dans /var/log/all.log, le vôtre peut être ailleurs et / ou vous devriez regarder le journal pour le jour où cela s’est produit – edit, sur RedHat, cela devrait être dans /var/log/messages , mais je ne sais pas comment ils sont pivotés par défaut):

 # grep -i -e "Killed process" -e "out of memory" /var/log/all.log 1406786406 1406786406 0 3 127.0.0.1 2014-07-31T01:00:06-05:00 ahostname kern err kernel[76729.082621]: [76729.082621] Out of memory: Kill process 22407 (java) score 187 or sacrifice child 1406786406 1406786406 0 3 127.0.0.1 2014-07-31T01:00:06-05:00 ahostname kern err kernel[76729.082625]: [76729.082625] Killed process 22407 (java) total-vm:859680kB, anon-rss:304232kB, file-rss:608kB 1406811608 1406811608 0 3 127.0.0.1 2014-07-31T08:00:08-05:00 ahostname kern err kernel[101910.841683]: [101910.841683] Out of memory: Kill process 1370 (java) score 198 or sacrifice child 1406811608 1406811608 0 3 127.0.0.1 2014-07-31T08:00:08-05:00 ahostname kern err kernel[101910.841686]: [101910.841686] Killed process 1370 (java) total-vm:859928kB, anon-rss:332688kB, file-rss:560kB 

Pour mieux comprendre ce qui se passe lorsqu’un système Linux manque de mémoire, consultez la documentation . Ou recherchez simplement “tueur de mémoire”.

Qu’est-ce qui se passe est que lorsque le système d’exploitation détecte qu’il est hors de la mémoire, il commence à tuer des processus. Parfois, cela peut être le processus sshd ou d’autres processus critiques pour se connecter au système.

Votre processus Java seul n’a probablement pas causé la panne, mais il a probablement été associé à d’autres éléments exécutés sur le même serveur pour provoquer le problème. Mais regarder dans les journaux pour OOM Killer est un bon sharepoint départ.

Il est également bon d’utiliser top pour voir quels autres processus sont en cours d’exécution qui utilisent le rest de la mémoire sur le système. Pour sortinger selon l’utilisation de la mémoire (mémoire la plus haute en premier), tapez M après avoir exécuté top .