Gyakori kérdések a Java Azure Command Launcherével kapcsolatban (nyilvános előzetes verzió)

Választ ad a Java Azure Command Launcherével kapcsolatos gyakori kérdésekre.

Miben különbözik ez az eszköz a Java-parancstól?

A java parancs az alapértelmezett beállításokkal futtatja a HotSpot JVM-et (Java virtuális gépet), kivéve, ha a felhasználó kifejezetten konfigurálja. jaz az Azure Command Launcher for Java egyik összetevője, amely csatatesztelt, felhőoptimalizált JVM-hangolási alapértelmezett beállításokkal indul java el, és az Azure-beli virtuális gépek és -tárolók teljesítményének és költséghatékonyságának javítására lett kialakítva.

Fő előny: a fejlesztőknek nem kell manuálisan hangolniuk a JVM-et. jaz elvégzi helyettük.

Mi történik, ha már beállítok néhány JVM-beállítást a környezetemben?

Ha a számítási feladat JVM-hangolási jelzőket tartalmaz, a jaz parancs nem alkalmazza a saját hangolási alapértelmezéseit. jaz a java kiválasztott jelzőkkel indul el.

Javasoljuk, hogy távolítsa el a munkaterhelés hangolási jelzőit, és hagyja, hogy a Java-hoz készült Azure Command Launcher alkalmazza a sajátját.

Konfigurálhatja jaz azt is, hogy figyelmen kívül hagyja a hangjelzőket, és a hangolási alapértelmezett beállításokat használja. Fontolja meg ennek a konfigurációnak a használatát jaz ellenőrzéséhez, miközben minimálisan módosítja a számítási feladatok konfigurációját. Ehhez állítsa be a következő környezeti változót:

export JAZ_IGNORE_USER_TUNING=1

A felhasználóval kapcsolatos figyelmen kívül hagyási beállítás a parancssori argumentumokra, a java által beolvasott környezeti változókra és az @-files-ra vonatkozik.

Úgy is konfigurálhatja jaz , hogy kihagyja az összes hangolási alapértelmezett beállítást a következő környezeti változó beállításával:

export JAZ_BYPASS=1

A megkerülési lehetőség lehetővé teszi az Azure Command Launcher for Java üzembe helyezését anélkül, hogy befolyásolná az aktuális hangolást, még akkor is, ha a számítási feladat a java parancs alapértelmezett viselkedését használja. Ez a viselkedés hasznos lehet az eszköz teszteléséhez a JVM hangolójelzőinek törlése előtt.

JVM hangolásának megkerülése is hasznos lehet a hangolással kapcsolatos problémák elhárítása során.

Milyen JVM-beállítások minősülnek hangolási jelzőknek?

A jaz parancs a legtöbb olyan jelzőt figyelembe veszi, amelyek hangjelzővel -X kezdődnek, vagy -XX hangjelzőnek minősülnek, például -Xmx<size>. Figyelemre méltó példa egy olyan zászlóra, amely -X kezdődik, de nem hangolási jelző -Xlog:<opts>.

Pontosabban az egyes JVM-lehetőségek kiértékelése az alábbi listában szereplő logikával történik. Ez a lista az Azure Command Launcher for Java legújabb verziójának logikáját ismerteti.

  1. Ha a beállítás bármilyen más szöveggel kezdődik, mint -X, akkor az nem hangoló beállítás.
  2. Ha a beállítás megfelel valamelyik normál kifejezésnek, az nem hangolásjelző:
    • ^-Xlog.+$
    • ^-XX:ErrorFile=.*$
    • ^-XX:[+-]?HeapDump.*$
    • ^-XX:[+-].*OnOutOfMemoryError$
  3. Ellenkező esetben a beállítás egy finomhangolási jelző.

Ha jaz hangolási jelzőket keres, megvizsgálja a neki átadott argumentumokat és az automatikusan beolvasott környezeti változókat java . A környezeti változók a következők:

  • Java 8: JAVA_TOOL_OPTIONS, _JAVA_OPTIONS
  • Java 9 és újabb verziók: JAVA_TOOL_OPTIONS, , JDK_JAVA_OPTIONS_JAVA_OPTIONS

jaz @-fájlokat is kezel, más néven parancssori argumentumfájlokat.

Átadhatom a Java-ügynök jelzőit az eszköz használatakor?

Yes. Továbbra is átadhat -javaagent és más olyan jelzőket, amelyek nem a hangolásra vonatkoznak, és jaz elfogadja azokat. A hasznos diagnosztikai jelzőket megtarthatja, például:

  • -Xlog naplózáshoz
  • -javaagent Az Application Insights vagy más alkalmazásteljesítmény-monitorozó (APM-) megfigyelő ügynökök esetében

Kompatibilis az eszköz nem Azure-beli környezetekkel?

jaz Elsősorban Azure-tárolókhoz és virtuális gépekhez lett tervezve és tesztelve, de technikailag máshol is futtatható. Egyes fejlett optimalizálások és jövőbeli funkciók azonban Azure-specifikusak lehetnek.

Elérhető az eszköz a Windows Serverhez?

jaz Jelenleg x64-en és arm64-en futó Linux rendszeren érhető el. Ha azonnal szüksége van a Windows Server, kérjük, lépjen kapcsolatba velünk a openjdk-support@microsoft.com.

Az Azure Command Launcher for Java tesztelése és minősítése csak teljes JDK-telepítéssel történt. Előfordulhat, hogy a következőkkel nem működik megfelelően:

  • JRE (Java Runtime Environment) telepítések
  • Egyéni jlink-futtatók

A teljes JDK-telepítés tartalmazza az összes olyan eszközt és kódtárat, amely jaz a megfelelő működéshez szükséges. Előfordulhat, hogy a JRE és a jlink egyéni futtatókörnyezetek nem rendelkeznek ilyen összetevőkkel, ami megakadályozhatja jaz a várt működést.

Miért számít a vezérlési csoport csatlakoztatási pontja?

A Java Azure parancsindítója beolvassa a cgroup v1 és v2 adatait /sys/fs/cgroup a rendelkezésre álló erőforrások, például a memóriakorlátok és a CPU-korlátozások meghatározásához, és ennek megfelelően hangolja a JVM-et. Ha a cgroup fájlrendszer nincs a szabványos /sys/fs/cgroup helyen csatlakoztatva, előfordulhat, jaz hogy nem észleli megfelelően a tárolókra vonatkozó korlátokat. Ez gyenge teljesítményhez vagy akár memóriahiányhoz is vezethet, mivel a jaz miatt a JVM-et a gazdagép erőforrásai alapján hangolják, a konténer tényleges korlátai helyett.

Nem azonosítottunk olyan valós forgatókönyvet, amelyben a csoport csatlakoztatási pontja valami egyéb lenne, mint /sys/fs/cgroup. Ezt a forgatókönyvet azonban szimulálhatja egy tárolóban a cgroup fájlrendszer /sys/fs/cgroup leválasztásával és egy másik helyen való csatlakoztatásával. Ezután a jaz nem tudja elolvasni a cgroup információkat, és nem alkalmazza a konténertudatos hangolást.

A problémák elkerüléséhez ne módosítsa a cgroup csatlakoztatási pontját a szokásos /sys/fs/cgroup helyről.

Bár a cgroup csatlakoztatási pontjai a tárolóalapú környezetekben a legrelevánsabbak, a virtuális gépeken és más Linux-környezetekben is relevánsak lehetnek, amelyek cgroupokat használnak az erőforrás-kezeléshez.

Működik az eszköz beágyazott csoportkonfigurációkkal?

A beágyazott csoportkonfigurációk hatással lehetnek arra, hogy a Azure parancsindító Java hogyan olvassa be az erőforráskorlátokat. jaz nem tesztelték beágyazott csoporthierarchiákkal, ezért előfordulhat, hogy ezekben a környezetekben nem észleli megfelelően az erőforrás-korlátozásokat.

Ha beágyazott csoportokat használ, és váratlan viselkedést tapasztal, lépjen kapcsolatba velünk a következő címen openjdk-support@microsoft.com: .