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.
- Ha a beállítás bármilyen más szöveggel kezdődik, mint
-X, akkor az nem hangoló beállítás. - Ha a beállítás megfelel valamelyik normál kifejezésnek, az nem hangolásjelző:
^-Xlog.+$^-XX:ErrorFile=.*$^-XX:[+-]?HeapDump.*$^-XX:[+-].*OnOutOfMemoryError$
- 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:
-
-Xlognaplózáshoz -
-javaagentAz 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.
Miért nem működik JRE- vagy jlink-futtatókörnyezetekkel?
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: .