Je suis passé de 1 instance (2 vCPU, 2 go de RAM, de charge ~4k req/sec) à Java 9 (à partir de la dernière version de Java 8). Pendant un moment, tout allait bien et d'utilisation de l'UC était comme avant. Cependant, après ~6 heures CPU consommation a augmenté de 4% (de 21% à 25%) pour aucune raison. Je n'avais pas de pics de trafic, pas d'augmentation de la consommation de mémoire, pas de métrique changements (j'ai des compteurs pour chaque méthode dans le code). Rien.
J'ai quitté cette instance intacte pour ~12 heures attendait que ça va revenir. Mais rien n'a changé. Il a juste commencé à consommer plus de ressources CPU.
top
commande a montré que l'instance avait plus de CPU pointes que d'habitude pour le serveur Java processus. J'ai lu récemment que le G1 n'est pas adapté pour le haut débit. J'ai donc fait une conclusion que la raison pourrait être en G1.
J'ai redémarré exemple avec:
java -XX:+UseParallelGC -jar server-0.28.0.jar
Et après environ 20 heures de la surveillance, tout est très bien comme avant. La consommation CPU est au niveau de 21% comme c'était le nombre de jours avant.
Utilisation de l'UC à droite après Java 9 de déploiement (6h échelle):
CPU augmenter après 7 heures + 12 heures "intact" (7d échelle):
CPU après -XX:+UseParallelGC
(24h à l'échelle):
Donc ma question est - est que le comportement attendu pour le G1? Quiconque voit quelque chose de similaire?
Ubuntu 16.04 x64
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
EDIT 03.01.2019
Essayé de l'exécuter sur le même serveur avec G1 sur le java 10.0.2:
java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)
G1 consomme 40% de plus de CPU que UseParallelGC
à droite après le redémarrage du serveur.