Kubernetes-Pod-Speicher – Java-GC-ProtokolleJava

Java-Forum
Anonymous
 Kubernetes-Pod-Speicher – Java-GC-Protokolle

Post by Anonymous »

Auf dem Kubernetes-Dashboard gibt es einen Pod, in dem die Speichernutzung (Byte) als 904,38 Mi angezeigt wird.

Dieser Pod enthält die Java-App, die mit -Xms512m -Xmx1024m ausgeführt wurde, und in der Kubernetes-Bereitstellungsdatei -> request.memory = 512M, limits.memory = 1,5G.

Ich habe GC-Protokolle aktiviert und sehe diese in den Pod-Protokollen:

Code: Select all

[2020-04-29T15:41:32.051+0000] GC(1533) Phase 1: Mark live objects
[2020-04-29T15:41:32.133+0000] GC(1533) Phase 1: Mark live objects 81.782ms
[2020-04-29T15:41:32.133+0000] GC(1533) Phase 2: Compute new object addresses
[2020-04-29T15:41:32.145+0000] GC(1533) Phase 2: Compute new object addresses 11.235ms
[2020-04-29T15:41:32.145+0000] GC(1533) Phase 3: Adjust pointers
[2020-04-29T15:41:32.199+0000] GC(1533) Phase 3: Adjust pointers 54.559ms
[2020-04-29T15:41:32.199+0000] GC(1533) Phase 4: Move objects
[2020-04-29T15:41:32.222+0000] GC(1533) Phase 4: Move objects 22.406ms
[2020-04-29T15:41:32.222+0000] GC(1533) Pause Full (Allocation Failure) 510M->127M(680M) 171.359ms
[2020-04-29T15:41:32.222+0000] GC(1532) DefNew: 195639K->0K(195840K)
[2020-04-29T15:41:32.222+0000] GC(1532) Tenured: 422769K->130230K(500700K)
[2020-04-29T15:41:32.222+0000] GC(1532) Metaspace: 88938K->88938K(1130496K)
[2020-04-29T15:41:32.228+0000] GC(1532) Pause Young (Allocation Failure) 603M->127M(614M) 259.018ms
[2020-04-29T15:41:32.228+0000] GC(1532) User=0.22s Sys=0.05s Real=0.26s
Wie kam es zu einer Nutzung von Kubernetes von 904,38 Mio.? Wenn ich es richtig verstanden habe, lauten die aktuellen Verwendungen nur:

Code: Select all

DefNew (young) -      0k
Tenured        - 130230K
Metaspace      -  88938K
Sum            - 216168K
Das Ausführen von ps zeigt, dass außer dieser Java-App keine anderen Prozesse auf dem Pod ausgeführt werden.

Kann jemand etwas Licht ins Dunkel bringen?

(bearbeitet)
Als der Pod zum ersten Mal gestartet und einige Minuten lang laufen gelassen wurde, wurde die Speichernutzung nur mit etwa 500 MB angezeigt. Wenn dann Anfragen eingehen, platzt er auf 900 MB bis 1 GB. Wenn dann alles verarbeitet wurde, sinkt die Speichernutzung auf dem k8s-Dashboard nicht unter 900 MB, obwohl der Heap laut GC-Protokollen in Ordnung ist.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post