Analisi Delle prestazioni
Utilizzando l'analisi delle prestazioni, gli amministratori possono ottenere suggerimenti per migliorare le prestazioni delle applicazioni Java in esecuzione sulle istanze gestite nella flotta. Per l'applicazione Java selezionata, JMS avvierà la registrazione JFR sulla JVM dell'applicazione, una volta completata la registrazione, il plugin JMS caricherà il file JFR in OCI.
Il passo finale è l'analisi dei file JFR e la creazione di un report con suggerimenti per la configurazione JVM dell'applicazione. Verificare sempre i valori consigliati per le applicazioni prima di apportare le modifiche negli ambienti di produzione. Trovare la migliore configurazione JVM per raggiungere i tuoi obiettivi di performance può essere difficile, ci sono cose da considerare che JMS non può implicare solo l'analisi degli eventi JVM Flight Recorder, se hai dubbi, non esitare a contattare il nostro team di value engineering https://www.oracle.com/java/java-se-subscription/value-engineering/.
Console cloud OCI
- Connettersi a OCI Console come amministratore.
- Aprire il menu di navigazione, fare clic su Osservabilità e gestione, quindi su Fleets in Java Management.
- Selezionare la flotta.
- Fare clic su Istanze gestite, quindi sull'istanza gestita in cui è in esecuzione l'applicazione.
- Fare clic su Applicazioni e selezionare l'applicazione su cui avviare l'analisi delle prestazioni.
- Fare clic su Azioni e selezionare Avvia analisi prestazioni.
- Fare clic su Avvia.
- Al termine della richiesta di lavoro, fare clic su Report di analisi delle prestazioni.
OCI CLI
- Creare il modello di payload delle destinazioni utilizzando il comando seguente:
oci jms fleet request-performance-tuning-analyses --generate-param-json-input targets
- Scopri i dettagli della tua applicazione, ad esempio con:
[ { "applicationInstallationKey": "$APP_INSTALL_KEY", "applicationKey": "$APP_KEY", "jreKey": "$APP_JRE_KEY", "managedInstanceId": "$MANAGED_INSTANCE_OCID" } ]
- Eseguire il seguente comando:
oci jms fleet request-performance-tuning-analyses --fleet-id $FLEET_OCID --recording-duration-in-minutes $RECORDING_DURATION --targets file://targets.json
Esempio
Nell'esempio seguente useremo la stessa applicazione che abbiamo usato per la dimostrazione della funzione di analisi crittografica:
#!/usr/bin/env bash
# configuration variables
FLEET_OCID=ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta
MANAGED_INSTANCE_OCID=ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq
APP_NAME=spring-tls-server
# get application key
APP_KEY=$(oci jms application-installation-usage-summary summarize-application-installation-usage --display-name-contains $APP_NAME --fleet-id $FLEET_OCID | jq -r '.data.items[]."application-key"')
# start performance analysis on specified managed instance
WORK_REQUEST_OCID=$(oci jms fleet request-performance-tuning-analyses \
--fleet-id "$FLEET_OCID" \
--recording-duration-in-minutes 15 \
--targets "[{\"managedInstanceId\":\"$MANAGED_INSTANCE_OCID\",\"applicationKey\":\"$APP_KEY\"}]" | jq -r '."opc-work-request-id"')
echo $WORK_REQUEST_OCID
Una volta terminata la richiesta di lavoro di analisi delle prestazioni, possiamo controllare il risultato con le seguenti chiamate API oppure possiamo controllare la console cloud OCI JMC:
#!/usr/bin/env bash
# configuration variables
APP_NAME=spring-tls-server-1.1.0.jar
FLEET_OCID=ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta
MANAGED_INSTANCE_OCID=ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq
WORK_REQUEST_OCID=ocid1.jmsworkrequest.oc1.eu-frankfurt-1.aaaaaaaavcnv2khspnmu7aj7bjlg2c7rytar7an7wbidhmvgm2fnbr6mvx4a
# get jms report location in object storage service related to our work request, the output will print namespace, bucket-name and object-name
oci jms performance-tuning-analysis-result list \
--fleet-id $FLEET_OCID \
--sort-by timeCreated \
--sort-order DESC \
--all \
--application-name=$APP_NAME \
--managed-instance-id "$MANAGED_INSTANCE_OCID" | jq -r ".data.items[]| select(.\"work-request-id\"==\"$WORK_REQUEST_OCID\") | .namespace,.\"bucket-name\",.\"object-name\""
# namespace, bucket-name and name parameters where taken from the report payload above
oci os object get \
--namespace frmss8xk2qta \
--bucket-name jms_ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta \
--name JMS/ANALYSIS/PERFTUNING/RESULTS/ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta/ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq/PerfTuningAnalysisResult-20250714094533-ocid1.jmsworkrequest.oc1.eu-frankfurt-1.aaaaaaaavcnv2khspnmu7aj7bjlg2c7rytar7an7wbidhmvgm2fnbr6mvx4a-9379a93c-1f35-4574-b528-266d6f8f9984.json
{
"applicationName": "spring-tls-server-1.1.0.jar",
"applicationId": "afecbb29e4f96bc9c87c5138a26877bd713305696e4f909af2c8947065e0c7cf",
"applicationInstallationId": "36be37c500e042eeef9e7aa52c294bbafd51556a90fd4eaae0c6ce099939d77c",
"jfrFileName": "JMS/JFR/ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta/ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq/20250714092917_479_0_1840025_0_spring-tls-server-1.1.0.jar.jfr",
"timeAnalyzed": "2025-07-14T09:45:33.022837159Z",
"summary": {
"warnings": [
{
"key": 1,
"code": "G1GCSmallerNewSizeFromMaxGCPauseMillisRule",
"description": "Decrease Young generation size to achieve lower pauses",
"message": "Current MaxGCPauseMillis (-2ms) is far from the actual average Young GC time (13.95ms). Setting smaller young generation may reduce average Young GC time. For example, this can be achieved by reducing -XX:MaxNewSize=40m. ",
"currentVmOptions": "",
"recommendedVmOptions": "-Xmn40894464",
"detailsLink": "https://docs.oracle.com/en/java/javase/guides/vm/gctuning/g1_gc_tuning.html#g1_gc_tuning ",
"comment": ""
},
...
],
"currentVmOptions": "",
"recommendedVmOptions": "-Xmn39m -XX:MetaspaceSize=92m -Xmx238m -Xms238m -XX:MaxHeapSize=238m -XX:MinHeapSize=238m -XX:InitialHeapSize=238m -XX:+AlwaysPreTouch"
},
"version": "1.0"
}