Veelgestelde vragen over het Azure Command Launcher voor Java (openbare preview)

Hier vindt u antwoorden op veelgestelde vragen over het Azure Command Launcher voor Java.

Hoe verschilt dit hulpprogramma van de Java-opdracht?

Met java de opdracht wordt de HotSpot JVM (Java Virtual Machine) uitgevoerd met standaardinstellingen, tenzij deze expliciet door de gebruiker is geconfigureerd. jaz is een onderdeel van het Azure Command Launcher voor Java dat wordt gestart java met geteste, in de cloud geoptimaliseerde standaardinstellingen voor JVM-afstemming, ontworpen om de prestaties en kostenefficiëntie op Azure-VM's en -containers te verbeteren.

Belangrijk voordeel: ontwikkelaars hoeven de JVM niet handmatig af te stemmen. jaz doet het voor hen.

Wat gebeurt er als ik al enkele JVM-opties in mijn omgeving heb ingesteld?

Als uw workload JVM-afstemmingsvlagmen bevat, past de jaz opdracht geen eigen standaardinstellingen voor afstemming toe. jaz wordt gestart java met de vlaggen die u hebt gekozen.

Het is raadzaam om de afstemmingsvlagmen van uw workload te verwijderen en het Azure Command Launcher voor Java zelf toe te laten passen.

U kunt ook jaz configureren om uw afstemmingsvlaggen te negeren en de standaardinstellingen voor het afstemmen te gebruiken. Overweeg deze configuratie te gebruiken om te valideren jaz met minimale wijzigingen in uw workloadconfiguratie. Hiervoor stelt u de volgende omgevingsvariabele in:

export JAZ_IGNORE_USER_TUNING=1

De instelling voor het negeren van gebruikersafstemming is van toepassing op opdrachtregelargumenten, omgevingsvariabelen die worden gelezen door javaen @-files.

U kunt ook configureren jaz om alle standaardinstellingen voor het afstemmen over te slaan door de volgende omgevingsvariabele in te stellen:

export JAZ_BYPASS=1

Met de bypassoptie kunt u onboarden naar het Azure Command Launcher voor Java zonder dat dit van invloed is op uw huidige afstemming, zelfs als uw workload gebruikmaakt van het standaardgedrag van de java opdracht. Dit gedrag kan nuttig zijn om het gedrag van het hulpprogramma te valideren voordat u JVM-afstemmingsvlagmen opschoont.

Het kan ook handig zijn om het afstemmen te omzeilen bij het oplossen van een probleem dat lijkt te zijn gerelateerd aan JVM-afstemming.

Welke JVM-opties worden beschouwd als afstemmingsvlagmen?

De jaz opdracht beschouwt de meeste vlaggen die beginnen met -X of -XX als een afstemmingsvlag, zoals -Xmx<size>. Een opmerkelijk voorbeeld van een vlag die begint met -X maar geen afstemmingsvlag is -Xlog:<opts>.

Om precies te zijn, wordt elke JVM-optie geëvalueerd met behulp van de logica in de volgende lijst. In deze lijst wordt de logica in de meest recente versie van azure Command Launcher voor Java beschreven.

  1. Als de optie begint met andere tekst dan -X, is dit geen afstemmingsvlag.
  2. Als de optie overeenkomt met een van deze reguliere expressies, dan is het geen tuning-vlag.
    • ^-Xlog.+$
    • ^-XX:ErrorFile=.*$
    • ^-XX:[+-]?HeapDump.*$
    • ^-XX:[+-].*OnOutOfMemoryError$
  3. Anders is de optie een afstemmingsparameter.

Wanneer jaz zoekt naar afstemmingsvlaggen, onderzoekt het de argumenten die eraan zijn meegegeven en de omgevingsvariabelen die java automatisch leest. De omgevingsvariabelen zijn:

  • Java 8: JAVA_TOOL_OPTIONS, _JAVA_OPTIONS
  • Java 9 en hoger: JAVA_TOOL_OPTIONS, JDK_JAVA_OPTIONS_JAVA_OPTIONS

jaz verwerkt ook @-files, ook wel opdrachtregelargumentbestanden genoemd.

Kan ik java-agentvlagmen doorgeven wanneer ik het hulpprogramma gebruik?

Yes. U kunt nog steeds vlaggen zoals -javaagent en andere vlaggen die geen afstemvlaggen zijn doorgeven, en jaz ondersteunt ze. U kunt nuttige diagnostische vlaggen behouden, zoals:

  • -Xlog voor logboekregistratie
  • -javaagent voor Application Insights of andere APM-instrumentatieagents (Application Performance Monitoring)

Is het hulpprogramma compatibel met niet-Azure-omgevingen?

jaz is speciaal ontworpen en getest voor Azure Containers en Virtual Machines, maar kan technisch gezien elders worden uitgevoerd. Sommige geavanceerde optimalisaties en toekomstige functies zijn echter mogelijk specifiek voor Azure.

Is het hulpprogramma beschikbaar voor Windows Server?

jaz is momenteel beschikbaar voor Linux in x64- en arm64-omgevingen. Als u direct behoefte hebt aan Windows Server, neem dan contact met ons op via openjdk-support@microsoft.com.

Het Azure Command Launcher voor Java is getest en alleen gecertificeerd met volledige JDK-installaties. Het werkt mogelijk niet goed met:

  • JRE-installaties (Java-uitvoeringsomgeving)
  • Aangepaste jlink-runtimes

Volledige JDK-installaties bevatten alle hulpprogramma's en bibliotheken die jaz goed moeten werken. Aangepaste runtimes van JRE en jlink kunnen mogelijk enkele van deze onderdelen missen, waardoor jaz mogelijk niet naar verwachting functioneert.

Waarom is mijn cgroup-koppelpunt belangrijk?

In het Azure startprogramma voor opdrachten voor Java worden cgroup v1- en v2-gegevens van /sys/fs/cgroup gelezen om de beschikbare resources te bepalen, zoals geheugenlimieten en CPU-beperkingen, en de JVM dienovereenkomstig af te stemmen. Als het cgroup-bestandssysteem niet is gekoppeld op de standaardlocatie /sys/fs/cgroup , jaz worden containerisatielimieten mogelijk niet correct gedetecteerd. Dit kan leiden tot slechte prestaties of zelfs out-of-memory fouten, omdat jaz de JVM mogelijk afstemt op de resources van de host in plaats van op de werkelijke limieten van de container.

We hebben geen praktijkscenario geïdentificeerd waarbij het koppelpunt van de cgroup iets anders is dan /sys/fs/cgroup. Het is echter mogelijk om dit scenario in een container te simuleren door het cgroup-bestandssysteem te ontkoppelen van /sys/fs/cgroup en op een andere locatie te koppelen. jaz Vervolgens kan de cgroup-informatie niet worden gelezen en wordt het afstemmen van containers niet toegepast.

Als u problemen wilt voorkomen, wijzigt u het koppelpunt van de cgroup niet vanaf de standaardlocatie /sys/fs/cgroup .

Hoewel cgroup-koppelpunten het meest relevant zijn in containeromgevingen, kunnen ze ook relevant zijn in virtuele machines en andere Linux-omgevingen die gebruikmaken van cgroups voor resourcebeheer.

Werkt het hulpprogramma met geneste cgroup-configuraties?

Geneste cgroupconfiguraties kunnen van invloed zijn op hoe het Azure-opdrachtstartprogramma voor Java resourcelimieten leest. jaz is niet getest met geneste cgroup-hiërarchieën, waardoor resourcebeperkingen in deze omgevingen mogelijk niet correct worden gedetecteerd.

Als u geneste cgroups gebruikt en onverwacht gedrag ondervindt, neemt u contact met ons op via openjdk-support@microsoft.com.