Überprüfen Sie die Java-Parameter in Kubernetes-Pods

Es gibt einen Stolperstein, der nur für k8s (oder Docker) gilt, wenn die auf Kubernetes ausgeführten Java-Parameter überprüft werden. Daher werde ich die Methode teilen, die funktioniert hat.

Bearbeiten der Docker-Datei

Normalerweise ist die PID des von Docker gestarteten Prozesses 1, aber da jcmd und jinfo, die später beschrieben werden, nicht mit PID 1 an den Prozess angehängt werden können, muss die PID geändert werden.

Um die PID zu ändern, werden wir ein Paket namens Tini einführen. Setzen Sie ENTRYPOINT außerdem auf tini und übergeben Sie die Anwendung, die Sie tatsächlich starten möchten, als Parameter.

Dockerfile


FROM openjdk:8-jdk-alpine
LABEL MAINTAINER="[email protected]"
WORKDIR /opt/docker
ADD --chown=daemon:daemon opt /opt
USER daemon
ENTRYPOINT ["/sbin/tini", "--", "/opt/docker/your/app/entrypoint"]
CMD []
USER root
RUN apk --update add bash
RUN apk add --no-cache tini
USER daemon
EXPOSE 9000

Wenn Sie andere Verzerrungen als Alpine verwenden, finden Sie Installationsanweisungen in GitHub von Tini. https://github.com/krallin/tini

Melden Sie sich bei Pod an

Das Anmelden am Pod erfolgt auf die übliche Weise.

$ kubectl get pod
NAME                                             READY     STATUS             RESTARTS   AGE
pod-name-xxxxxxxxxx-xxxxx                        1/1       Running            0          10h
$ kubectl exec -it pod-name-xxxxxxxxxx-xxxxx bash

Überprüfen Sie den Standardwert des Parameters

$ java -XX:+PrintFlagsFinal -version
[Global flags]
     intx ActiveProcessorCount                      = -1                                  {product}
    uintx AdaptiveSizeDecrementScaleFactor          = 4                                   {product}
    uintx AdaptiveSizeMajorGCDecayTimeScale         = 10                                  {product}
...

Überprüfen Sie die Parameter des laufenden Java-Programms

Überprüfen Sie die PID des Zielprozesses mit dem Befehl jps.

$ jps -v
7 ProdServerStart -Duser.dir=/opt/docker
142 Jps -Dapplication.home=/usr/lib/jvm/java-1.8-openjdk -Xms8m

Sie können eine Liste gültiger Parameter anzeigen, indem Sie die mit dem Befehl jcmd überprüfte PID angeben.

$ jcmd 7 VM.flags -all
7:
[Global flags]
     intx ActiveProcessorCount                      = -1                                  {product}
    uintx AdaptiveSizeDecrementScaleFactor          = 4                                   {product}
    uintx AdaptiveSizeMajorGCDecayTimeScale         = 10                                  {product}
...

Verwenden Sie den Befehl jinfo, um die Einstellungen für einen bestimmten Parameter anzuzeigen. Das Folgende ist ein Beispiel für die Überprüfung des Maximalwerts des Heapspeichers.

$ jinfo -flag MaxHeapSize 7
-XX:MaxHeapSize=1960837120

Referenzseite für Java-Parameter

https://docs.oracle.com/javase/jp/8/docs/technotes/tools/unix/java.html http://etc9.hatenablog.com/entry/2016/05/11/012037 https://x1.inkenkun.com/archives/367 https://qiita.com/kaikusakari/items/9f96ffd3a6dd71dfd914

Recommended Posts

Überprüfen Sie die Java-Parameter in Kubernetes-Pods
Überprüfen Sie die https-Verbindung mit Java
Stoppen Sie die App (Pod) auf Kubernetes
Partisierung in Java
Java-Versionsprüfung
Änderungen in Java 11
Janken in Java
Java-Überprüfungsprozess
Umfangsrate in Java
FizzBuzz in Java
Überprüfen Sie das statische und öffentliche Verhalten in Java-Methoden
Lesen Sie JSON in Java
Interpreter-Implementierung durch Java
Janken App in Java
Einschränkungsprogrammierung in Java
Setzen Sie Java8 in Centos7
NVL-artiger Typ in Java
Verbinden Sie Arrays in Java
"Hallo Welt" in Java
Aufrufbare Schnittstelle in Java
Kommentare in der Java-Quelle
Formatieren Sie XML in Java
Einfache HTML-Spezialchars in Java
Boyer-Moore-Implementierung in Java
Hallo Welt in Java
Verwenden Sie OpenCV mit Java
WebApi-Memorandum mit Java
Typbestimmung in Java
Befehle in Java ausführen (Ping)
Verschiedene Threads in Java
Implementierung der Heap-Sortierung (in Java)
[Java] Argumente und Parameter
Zabbix API in Java
ASCII-Kunst in Java
Listen in Java vergleichen
POST JSON in Java
Fehler in Java ausdrücken
Erstellen Sie JSON in Java
Datumsmanipulation in Java 8
Was ist neu in Java 8?
Überprüfen Sie die Abdeckung mit Codecov in der Java + Gradle + Wercker-Konfiguration
Verwenden Sie PreparedStatement in Java
Was ist neu in Java 9,10,11
Parallele Ausführung in Java
Anmerkung: [Java] Überprüfen der in pom.xml beschriebenen groupId usw.
Einfache Möglichkeit, die Methoden- / Feldliste in Java REPL zu überprüfen
Lesen Sie Binärdateien in Java 1
Vermeiden Sie den Fehler, den Yuma in Java gemacht hat
[Neta] Sleep Sort in Java
Bearbeiten von ini in Java: ini4j
Java-Geschichte in dieser Welt
Segfo Java in 6 Zeilen
Versuchen Sie, JavaScript in Java aufzurufen
Lassen Sie uns Spresense mit Java entwickeln (1)
Aktivieren Sie starke Parameter in devise
Ich habe ein Roulette in Java gemacht.
Implementierung der zweistufigen Authentifizierung in Java
Refactoring: Machen Sie Blackjack in Java