I want to profile my play application on my Kubernetes cluster.
I am using VisualVM, and the steps that I have taken are as follows:
Running my play application with the following args:
"-Dcom.sun.management.jmxremote", "-Dcom.sun.management.jmxremote.ssl=false", "-Dcom.sun.management.jmxremote.authenticate=false", "-Dcom.sun.management.jmxremote.port=1098"
My Image has apt-get install -y visualvm
kubectl port-forward <Container> 1098
I am not sure what I am doing wrong here. When running the application on localhost (not via IDE, straight from the startup script) everything works fine.
Update 1, deployment and service
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: myApp labels: name: myApp spec: replicas: 1 strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 0 type: RollingUpdate template: metadata: name: myApp labels: name: myApp spec: containers: - name: myApp image: ... args: ["-Dcom.sun.management.jmxremote", "-Dcom.sun.management.jmxremote.ssl=false", "-Dcom.sun.management.jmxremote.authenticate=false", "-Dcom.sun.management.jmxremote.port=1098"] ports: - containerPort: 9000 env: ...
apiVersion: v1
kind: Service
metadata:
name: myApp
labels:
name: myApp
spec:
selector:
name: myApp
ports:
- port: 80
targetPort: 9000
Update 2 @marcospereira
File->Add JMX connection-> localhost:1098
Cannot connect to localhost:1098 using service jmx:rmi...
It can be executed in the same form as QA below.
multiple app nodes how to expose jmx in kubernetes?
Please set java.rmi.server.hostname
System Property.
"-Dcom.sun.management.jmxremote",
"-Dcom.sun.management.jmxremote.ssl=false",
"-Dcom.sun.management.jmxremote.authenticate=false",
"-Dcom.sun.management.jmxremote.port=1098"
"-Djava.rmi.server.hostname=127.0.0.1" #add
Jmx connect to localhost:1098
.
I confirmed that I could connect.
您也必须添加 rmi 端口选项 -Dcom.sun.management.jmxremote.rmi.port=1098
You need to run below command to port forward in a correct manner:
kubectl port-forward ${pod_name} 1098:1098
In visualvm, add jmx connection with localhost:1098.
Add below parameters to enable jmx connection in your java options,
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1098
-Dcom.sun.management.jmxremote.rmi.port=1098
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=127.0.0.1
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.