Pertanyaan yang Sering Ditanyakan tentang Peluncur Perintah Azure untuk Java (pratinjau umum)

Menyediakan jawaban atas pertanyaan umum tentang Peluncur Perintah Azure untuk Java.

Bagaimana alat ini berbeda dari perintah java?

Perintah java menjalankan HotSpot JVM (Java Virtual Machine) dengan pengaturan default kecuali dikonfigurasi secara eksplisit oleh pengguna. jaz adalah komponen Azure Command Launcher untuk Java yang meluncurkan java dengan default penyetelan JVM yang dioptimalkan untuk cloud dan sudah teruji, yang dirancang untuk meningkatkan performa dan efisiensi biaya pada VM dan wadah Azure.

Manfaat utama: pengembang tidak perlu menyetel JVM secara manual. jaz melakukannya untuk mereka.

Apa yang terjadi jika saya sudah mengatur beberapa opsi JVM di lingkungan saya?

Jika beban kerja Anda menyertakan flag penyetelan JVM, perintah jaz tidak menerapkan default penyetelan bawaan sendiri. jaz meluncurkan java dengan parameter yang Anda pilih.

Sebaiknya hapus bendera penyetelan beban kerja Anda dan biarkan Peluncur Perintah Azure untuk Java menerapkan benderanya sendiri.

Anda juga dapat mengonfigurasi jaz untuk mengabaikan parameter penyetelan Anda dan menggunakan nilai default penyetelannya. Pertimbangkan untuk menggunakan konfigurasi ini untuk memvalidasi jaz dengan perubahan minimal pada konfigurasi beban kerja Anda. Untuk melakukannya, atur variabel lingkungan berikut:

export JAZ_IGNORE_USER_TUNING=1

Pengaturan abaikan penyetelan pengguna berlaku untuk argumen baris perintah, variabel lingkungan yang dibaca oleh java, dan @-files.

Anda juga dapat mengonfigurasi jaz untuk melewati semua default penyetelannya dengan mengatur variabel lingkungan berikut:

export JAZ_BYPASS=1

Opsi bypass memungkinkan Anda untuk onboarding ke Peluncur Perintah Azure untuk Java tanpa memengaruhi pengaturan Anda saat ini, bahkan jika beban kerja Anda menggunakan perilaku default dari perintah java. Perilaku ini mungkin berguna untuk memvalidasi perilaku alat sebelum membersihkan bendera penyetelan JVM.

Mungkin juga berguna untuk melewati penyetelan saat memecahkan masalah yang tampaknya terkait dengan penyetelan JVM.

Opsi JVM apa yang dianggap menyetel bendera?

Perintah jaz menganggap sebagian besar flag yang dimulai dengan -X atau -XX sebagai flag penyetelan, seperti -Xmx<size>. Contoh penting dari bendera yang dimulai dengan -X tetapi bukan bendera penyetelan adalah -Xlog:<opts>.

Lebih tepatnya, setiap opsi JVM dievaluasi menggunakan logika dalam daftar berikut. Daftar ini menjelaskan logika dalam versi terbaru Azure Command Launcher untuk Java.

  1. Jika opsi dimulai dengan teks apa pun selain -X, itu bukan bendera penyetelan.
  2. Jika opsi cocok dengan salah satu ekspresi reguler ini, itu bukan parameter penyetelan:
    • ^-Xlog.+$
    • ^-XX:ErrorFile=.*$
    • ^-XX:[+-]?HeapDump.*$
    • ^-XX:[+-].*OnOutOfMemoryError$
  3. Jika tidak, opsinya adalah parameter penyetelan.

Saat jaz mencari parameter penyetelan, ia memeriksa argumen yang diteruskan kepadanya dan variabel lingkungan yang java baca secara otomatis. Variabel lingkungannya adalah:

  • Java 8: JAVA_TOOL_OPTIONS, _JAVA_OPTIONS
  • Java 9 dan yang lebih baru: JAVA_TOOL_OPTIONS, , JDK_JAVA_OPTIONS_JAVA_OPTIONS

jaz juga menangani @-files, juga dikenal sebagai file argumen baris perintah.

Bisakah saya meneruskan flag agen Java saat menggunakan alat?

Yes. Anda masih dapat meneruskan -javaagent dan penanda lain yang bukan penanda penyetelan, dan jaz mengakui mereka. Anda dapat menyimpan bendera diagnostik yang berguna seperti:

  • -Xlog untuk pengelogan
  • -javaagent untuk Application Insights atau agen instrumentasi Application Performance Monitoring (APM) lainnya

Apakah alat ini kompatibel dengan lingkungan non-Azure?

jaz dirancang dan diuji terutama untuk Azure Containers dan Virtual Machines, tetapi secara teknis dapat berjalan di tempat lain. Namun, beberapa pengoptimalan tingkat lanjut dan fitur di masa mendatang mungkin khusus Azure.

Apakah alat ini tersedia untuk Windows Server?

jaz saat ini tersedia untuk Linux di lingkungan x64 dan arm64. Jika Anda memiliki kebutuhan langsung untuk Windows Server, silakan hubungi kami di openjdk-support@microsoft.com.

Peluncur Perintah Azure untuk Java telah diuji dan disertifikasi hanya dengan penginstalan JDK penuh. Ini mungkin tidak berfungsi dengan benar dengan:

  • Penginstalan JRE (Java Runtime Environment)
  • Jlink runtimes kustom

Penginstalan JDK lengkap mencakup semua alat dan pustaka yang jaz mengharuskan untuk bekerja dengan baik. Runtime kustom JRE dan jlink mungkin tidak memiliki beberapa komponen ini, yang dapat mencegah jaz berfungsi seperti yang diharapkan.

Mengapa titik pemasangan cgroup saya penting?

Peluncur Perintah Azure untuk Java membaca informasi cgroup v1 dan v2 dari /sys/fs/cgroup untuk menentukan sumber daya yang tersedia, seperti batas memori dan batasan CPU, dan sesuaikan JVM yang sesuai. Jika sistem file cgroup tidak dipasang di lokasi standar /sys/fs/cgroup , jaz mungkin tidak mendeteksi batas kontainerisasi dengan benar. Ini dapat menyebabkan performa yang buruk atau bahkan kesalahan kehabisan memori karena jaz mungkin menyetel JVM berdasarkan batas sumber daya host daripada batas aktual sumber daya kontainer.

Kami belum mengidentifikasi skenario dunia nyata di mana titik pemasangan cgroup adalah sesuatu selain /sys/fs/cgroup. Namun, dimungkinkan untuk mensimulasikan skenario ini dalam kontainer dengan melepas sistem file cgroup dari /sys/fs/cgroup dan memasangnya di lokasi yang berbeda. Kemudian, jaz tidak akan dapat membaca informasi cgroup dan tidak akan menerapkan penyetelan yang disesuaikan untuk kontainer.

Untuk menghindari masalah, jangan ubah titik pemasangan cgroup Anda dari lokasi standar /sys/fs/cgroup .

Meskipun titik pemasangan cgroup paling relevan di lingkungan kontainer, titik pemasangan tersebut juga dapat relevan di komputer virtual dan lingkungan Linux lainnya yang menggunakan cgroup untuk manajemen sumber daya.

Apakah alat ini berfungsi dengan konfigurasi cgroup berlapis?

Konfigurasi cgroup berlapis dapat memengaruhi bagaimana Peluncur Perintah Azure untuk Java membaca batas sumber daya. jaz belum diuji dengan hierarki cgroup berlapis, sehingga mungkin tidak mendeteksi batasan sumber daya dengan benar di lingkungan ini.

Jika Anda menggunakan cgroup berlapis dan mengalami perilaku tak terduga, silakan hubungi kami di openjdk-support@microsoft.com.