Java için Azure Komut Başlatıcısı (genel önizleme) hakkında sık sorulan sorular

Java için Azure Komut Başlatıcısı hakkında sık sorulan soruların yanıtlarını sağlar.

Bu aracın java komutundan farkı nedir?

Komut, java kullanıcı tarafından açıkça yapılandırılmadığı sürece HotSpot JVM'yi (Java Sanal Makinesi) varsayılan ayarlarla çalıştırır. Java için Azure Komut Başlatıcısı'nın bir bileşeni olan jaz, java'i savaşta denenmiş, bulut için optimize edilmiş JVM ayarlama varsayılanlarıyla başlatır ve Azure VM'leri ile kapsayıcılar üzerinde performans ve maliyet verimliliğini artırmak üzere tasarlanmıştır.

Önemli avantaj: Geliştiricilerin JVM'yi el ile ayarlaması gerekmez. jaz onlar adına yapar.

Ortamımda bazı JVM seçeneklerini zaten ayarladıysam ne olur?

İş yükünüz JVM ayarlama bayrakları içeriyorsa, jaz komut kendi ayarlama varsayılanlarını uygulamaz. jaz java seçtiğiniz bayraklarla başlatılır.

İş yükünüzün ayarlama bayraklarını kaldırmanızı ve Java için Azure Komut Başlatıcısı'nın kendi bayrağını uygulamasına izin vermenizi öneririz.

Ayrıca, ayarlama bayraklarınızı yoksayacak ve ayarlama varsayılanlarını kullanacak şekilde yapılandırabilirsiniz jaz . İş yükü yapılandırmanızda en az değişiklikle doğrulamak jaz için bu yapılandırmayı kullanmayı göz önünde bulundurun. Bunu yapmak için aşağıdaki ortam değişkenini ayarlayın:

export JAZ_IGNORE_USER_TUNING=1

Kullanıcı ayarını yok sayma ayarı, komut satırı bağımsız değişkenlerine, java tarafından okunan ortam değişkenlerine ve @-dosyalarına uygulanır.

Aşağıdaki ortam değişkenini ayarlayarak tüm ayarlama varsayılanlarını atlamayı da yapılandırabilirsiniz jaz :

export JAZ_BYPASS=1

Atlama seçeneği, iş yükünüz komutun varsayılan davranışını kullanıyorsa da, mevcut ayarlarınızı etkilemeden Java için Azure Komut Başlatıcısı'na onboarding işlemini başlatmanızı sağlar. Bu davranış, JVM ayarlama bayraklarını temizlemeden önce aracın davranışını doğrulamak için yararlı olabilir.

JVM ayarlaması ile ilgili gibi görünen bir sorunu giderirken ayarlamayı atlamak da yararlı olabilir.

Hangi JVM seçenekleri, ayarlama bayrakları olarak kabul edilir?

Komut, jaz veya -X ile -XX başlayan çoğu bayrağı -Xmx<size> gibi bir ayar bayrağı olarak kabul eder. ile -X başlayan ancak ayarlama bayrağı olmayan bir bayrağın önemli bir örneğidir -Xlog:<opts>.

Daha kesin olarak, her JVM seçeneği aşağıdaki listede yer alan mantık kullanılarak değerlendirilir. Bu listede Java için Azure Komut Başlatıcısı'nın en son sürümündeki mantık açıklanmaktadır.

  1. Eğer seçenek -X dışında herhangi bir metinle başlıyorsa, bu bir ayarlama bayrağı değildir.
  2. Seçenek bu normal ifadelerden herhangi biri ile eşleşiyorsa, bu bir ayarlama bayrağı değildir:
    • ^-Xlog.+$
    • ^-XX:ErrorFile=.*$
    • ^-XX:[+-]?HeapDump.*$
    • ^-XX:[+-].*OnOutOfMemoryError$
  3. Aksi takdirde, seçenek bir ayarlama bayrağıdır.

Ayarlama bayraklarını ararken jaz, ona geçirilen bağımsız değişkenleri ve java tarafından otomatik olarak okunan ortam değişkenlerini inceler. Ortam değişkenleri şunlardır:

  • Java 8: JAVA_TOOL_OPTIONS, _JAVA_OPTIONS
  • Java 9 ve üzeri: JAVA_TOOL_OPTIONS, JDK_JAVA_OPTIONS, _JAVA_OPTIONS

jaz ayrıca komut satırı bağımsız değişken dosyaları olarak da bilinen @-files dosyalarını işler.

Aracı kullanırken Java Aracı bayrakları geçirebilir miyim?

Yes. Yine de -javaagent ve ayar bayrakları olmayan diğer bayrakları geçirebilir ve jaz bunlara saygı gösterir. Aşağıdakiler gibi yararlı tanılama bayraklarını tutabilirsiniz:

  • -Xlog günlük kaydı için
  • -javaagent Application Insights veya diğer Uygulama Performansı İzleme (APM) izleme aracıları için

Araç Azure dışı ortamlarla uyumlu mu?

jaz öncelikle Azure Kapsayıcıları ve Sanal Makineler için tasarlanıp test edilir, ancak teknik olarak başka bir yerde çalıştırılabilir. Ancak bazı gelişmiş iyileştirmeler ve gelecekteki özellikler Azure'a özgü olabilir.

Araç Windows Server için kullanılabilir mi?

jaz şu anda x64 ve arm64 ortamlarında Linux için kullanılabilir. hemen Windows Server ihtiyacınız varsa lütfen openjdk-support@microsoft.com adresinden bizimle iletişime geçin.

Java için Azure Komut Başlatıcısı yalnızca tam JDK yüklemeleriyle test edilmiştir ve onaylanmıştır. Şu durumlarda düzgün çalışmayabilir:

  • JRE (Java Çalışma Zamanı Ortamı) yüklemeleri
  • Özel jlink çalışma zamanları

Tam JDK yüklemeleri, düzgün çalışmasını gerektiren jaz tüm araçları ve kitaplıkları içerir. JRE ve jlink özel çalışma zamanlarında bu bileşenlerden bazıları eksik olabilir ve bu da beklendiği gibi çalışmasını engelleyebilir jaz .

Cgroup bağlama noktam neden önemli?

Java için Azure Komut Başlatıcısı, bellek sınırları ve CPU kısıtlamaları gibi kullanılabilir kaynakları belirlemek ve JVM'yi buna göre ayarlamak için /sys/fs/cgroup'dan cgroup v1 ve v2 bilgilerini okur. Cgroup dosya sistemi standart /sys/fs/cgroup konuma bağlı değilse kapsayıcılama jaz sınırlarını doğru algılamayabilir. Kapsayıcının gerçek sınırları yerine konağın kaynaklarına göre JVM'yi ayarlayabildiği için bu, zayıf performansa ve hatta bellek yetersizliği hatalarına jaz neden olabilir.

Gerçek dünya senaryolarında cgroup bağlama noktasının /sys/fs/cgroup dışında bir şey olduğu durumları tanımlamadık. Ancak, cgroup dosya sisteminin /sys/fs/cgroup bağlantısını kaldırıp farklı bir konuma takarak bu senaryonun bir kapsayıcıda benzetimini yapmak mümkündür. Ardından, jaz cgroup bilgilerini okuyamaz ve kapsayıcı kullanan ayarlama uygulamaz.

Sorunları önlemek için cgroup bağlama noktanızı standart /sys/fs/cgroup konumdan değiştirmeyin.

Cgroup bağlama noktaları kapsayıcılı ortamlarda en uygun olsa da, kaynak yönetimi için cgroup kullanan sanal makinelerde ve diğer Linux ortamlarında da ilgili olabilir.

Araç iç içe cgroup yapılandırmalarıyla çalışıyor mu?

İç içe yerleştirilmiş cgroup yapılandırmaları, Java için Azure Komut Başlatıcısının kaynak sınırlarını nasıl okuduğunu etkileyebilir. jaz iç içe cgroup hiyerarşileriyle test edilmemiştir, bu nedenle bu ortamlarda kaynak kısıtlamalarını doğru algılamayabilir.

İç içe cgroups kullanıyorsanız ve beklenmeyen davranışlarla karşılaşıyorsanız lütfen adresinden openjdk-support@microsoft.combizimle iletişime geçin.