Sto cercando di ottimizzare la mia applicazione principalmente per ridurre la "diffusione" dei tempi di risposta. La media va bene, ma l'intervallo è troppo ampio.Sintonizzazione JVM per alta velocità di allocazione
Dynatrace ha dimostrato che i tempi di risposta più elevati sono associati a una maggiore quantità di tempo trascorso in sospensione. Questo indica GC.
Ho provato a modificare alcuni valori di GC JVM basati sulla lettura online, con scarso successo.
In base ai log GC ho calcolato che il tasso di allocazione è di circa 324 MB/se il tasso di promozione è di soli 0,85 MB/s. A me sembra che abbia un tasso di allocazione molto alto, quindi ho cercato di aumentare le dimensioni della Young Generation.
Il primo screenshot è con impostazioni Java 8 predefinite, 1024 MB Xmx.
Il secondo screenshot sta impostando NewRatio = 1.
Qualsiasi suggerimento su cosa provare dopo sarebbe molto apprezzato.
Le cose che ho già provato: passaggio a G1GC, l'impostazione NewRatio = 1, impostando NewRatio = 1 e aumentando Xmx a 2048, l'impostazione newSize = 1600m e Xmx = 2048, l'impostazione MetaspaceSize = 100
Modifica: Aggiunta tronchi GC: http://pastebin.com/VhJwSuxv
Nota: Questi registri sono dalla prova 10min con il cambiamento: NewRatio = 1
* "Basato sui log GC" *, pubblicarli? – the8472
Aggiunto collegamento a pastebin con i log del GC. Nota queste sono con la modifica: NewRatio = 1 – Bobby
Le giovani collezioni offrono una pausa di 70-80 ms abbastanza coerente. Le vecchie raccolte richiedono più tempo, ma sono rare e ciò dovrebbe essere previsto quando si utilizza il raccoglitore della velocità effettiva. Quindi probabilmente dovresti ottenere più concretezza sulle misure di risposta per verificare che siano effettivamente correlate al GC. – the8472