Aracılığıyla paylaş


Azure Uygulaması Hizmetinde Tomcat, JBoss veya Java SE uygulaması dağıtma ve yapılandırma

Bu makalede, App Service'teki Java uygulamaları için en yaygın dağıtım ve çalışma zamanı yapılandırması gösterilmektedir. Azure Uygulaması Hizmeti'ni hiç kullanmadıysanız önce Java hızlı başlangıcını okumanız gerekir. Java geliştirmeye özgü olmayan App Service'i kullanma hakkındaki genel sorular App Service SSS bölümünde yanıtlandırılır.

Azure Uygulaması Hizmeti, tam olarak yönetilen bir hizmette Java web uygulamalarını üç farklı şekilde çalıştırır:

  • Java SE - Eklenmiş bir sunucu (Spring Boot, Dropwizard, Quarkus gibi) veya katıştırılmış Tomcat veya Jetty sunucusu içeren bir JAR paketi olarak dağıtılan bir uygulamayı çalıştırabilir.
  • Tomcat - Yerleşik Tomcat sunucusu WAR paketi olarak dağıtılan bir uygulamayı çalıştırabilir.
  • JBoss EAP - Yalnızca Premium v3 ve Yalıtılmış v2 fiyatlandırma katmanlarında Linux uygulamaları için desteklenir. Yerleşik JBoss EAP sunucusu WAR veya EAR paketi olarak dağıtılan bir uygulamayı çalıştırabilir.

Not

Spring uygulamaları için Azure Spring Apps kullanmanızı öneririz. Ancak, Azure Uygulaması Hizmetini hedef olarak kullanmaya devam edebilirsiniz. Öneri için bkz . Java İş Yükü Hedef Kılavuzu .

Java sürümünü göster

Geçerli Java sürümünü göstermek için Cloud Shell'de aşağıdaki komutu çalıştırın:

az webapp config show --resource-group <resource-group-name> --name <app-name> --query linuxFxVersion

Desteklenen tüm Java sürümlerini göstermek için Cloud Shell'de aşağıdaki komutu çalıştırın:

az webapp list-runtimes --os linux | grep "JAVA\|TOMCAT\|JBOSSEAP"

Sürüm desteği hakkında daha fazla bilgi için bkz . App Service dil çalışma zamanı destek ilkesi.

Uygulamanızı dağıtma

Build Tools

Maven

Azure Web Apps için Maven Eklentisi ile Maven Java projenizi proje kökünde tek bir komutla Azure Web App için kolayca hazırlayabilirsiniz:

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config

Bu komut, mevcut bir azure-webapp-maven-plugin Azure Web App'i seçmenizi veya yeni bir uygulama oluşturmanızı isteyip istemediğinizi sorarak bir eklenti ve ilgili yapılandırma ekler. Yapılandırma sırasında uygulamanızın Java SE, Tomcat veya (yalnızca Linux) JBoss EAP'ye dağıtılıp dağıtılmayacağını algılamaya çalışır. Ardından aşağıdaki komutu kullanarak Java uygulamanızı Azure'a dağıtabilirsiniz:

mvn package azure-webapp:deploy

aşağıda içinde örnek bir yapılandırma verilmişti pom.xml:

<plugin> 
  <groupId>com.microsoft.azure</groupId>  
  <artifactId>azure-webapp-maven-plugin</artifactId>  
  <version>2.11.0</version>  
  <configuration>
    <subscriptionId>111111-11111-11111-1111111</subscriptionId>
    <resourceGroup>spring-boot-xxxxxxxxxx-rg</resourceGroup>
    <appName>spring-boot-xxxxxxxxxx</appName>
    <pricingTier>B2</pricingTier>
    <region>westus</region>
    <runtime>
      <os>Linux</os>      
      <webContainer>Java SE</webContainer>
      <javaVersion>Java 17</javaVersion>
    </runtime>
    <deployment>
      <resources>
        <resource>
          <type>jar</type>
          <directory>${project.basedir}/target</directory>
          <includes>
            <include>*.jar</include>
          </includes>
        </resource>
      </resources>
    </deployment>
  </configuration>
</plugin> 

Gradle

  1. eklentisini öğesine build.gradleekleyerek Azure Web Apps için Gradle Eklentisini ayarlayın:

    plugins {
      id "com.microsoft.azure.azurewebapp" version "1.10.0"
    }
    
  2. Web uygulamanızın ayrıntılarını yapılandırın. İlgili Azure kaynakları yoksa oluşturulur. Aşağıda örnek bir yapılandırma verilmiştir. Ayrıntılar için bu belgeye bakın.

    azurewebapp {
        subscription = '<your subscription id>'
        resourceGroup = '<your resource group>'
        appName = '<your app name>'
        pricingTier = '<price tier like 'P1v2'>'
        region = '<region like 'westus'>'
        runtime {
          os = 'Linux'
          webContainer = 'Tomcat 10.0' // or 'Java SE' if you want to run an executable jar
          javaVersion = 'Java 17'
        }
        appSettings {
            <key> = <value>
        }
        auth {
            type = 'azure_cli' // support azure_cli, oauth2, device_code and service_principal
        }
    }
    
  3. Tek bir komutla dağıtın.

    gradle azureWebAppDeploy
    

IDE

Azure, popüler Java IDE'lerinde aşağıdakiler dahil olmak üzere sorunsuz Java App Service geliştirme deneyimi sağlar:

Kudu API'si

Java SE'ye .jar dosyaları dağıtmak için Kudu sitesinin uç noktasını kullanın /api/publish . Bu API hakkında daha fazla bilgi için bu belgelere bakın.

Not

Uygulamanızı tanımlamak ve çalıştırmak için app Service için .jar uygulamanızın adı app.jar olmalıdır. Maven eklentisi bunu dağıtım sırasında sizin için otomatik olarak yapar. JAR'ınızı app.jar olarak yeniden adlandırmak istemiyorsanız, .jar uygulamanızı çalıştırmak için komutuyla bir kabuk betiği yükleyebilirsiniz. Bu betiğin mutlak yolunu portalın Yapılandırma bölümündeki Başlangıç Dosyası metin kutusuna yapıştırın. Başlangıç betiği, yerleştirildiği dizinden çalışmaz. Bu nedenle başlatma dizenizde her zaman başvuru dosyalarının mutlak yollarını kullanın (örneğin: java -jar /home/myapp/myapp.jar).

.war dosyalarını Tomcat'e dağıtmak için uç noktayı kullanarak /api/wardeploy/ arşiv dosyanızı POST yapın. Bu API hakkında daha fazla bilgi için bu belgelere bakın.

.war dosyalarını JBoss'a dağıtmak için uç noktayı kullanarak /api/wardeploy/ arşiv dosyanızı POST yapın. Bu API hakkında daha fazla bilgi için bu belgelere bakın.

.ear dosyalarını dağıtmak için FTP kullanın. .ear uygulamanız, uygulamanızın yapılandırmasında tanımlanan bağlam köküne dağıtılır. Örneğin, uygulamanızın bağlam kökü ise <context-root>myapp</context-root>, şu yolda /myapp siteye göz atabilirsiniz: http://my-app-name.azurewebsites.net/myapp. Web uygulamanızın kök yolda hizmet vermesini istiyorsanız, uygulamanızın bağlam kökünü kök yola ayarladığınızdan emin olun: <context-root>/</context-root>. Daha fazla bilgi için bkz . Web uygulamasının bağlam kökünü ayarlama.

FTP kullanarak .war veya .jar dağıtmayın. FTP aracı başlangıç betiklerini, bağımlılıkları veya diğer çalışma zamanı dosyalarını karşıya yüklemek için tasarlanmıştır. Web uygulamalarını dağıtmak için en uygun seçenek bu değildir.

URL'yi yeniden yazma veya yeniden yönlendirme

URL'yi yeniden yazmak veya yeniden yönlendirmek için UrlRewriteFilter gibi kullanılabilir URL yeniden yazmalarından birini kullanın.

Tomcat ayrıca bir yeniden yazma vanası sağlar.

JBoss ayrıca yeniden yazma vanası sağlar.

Uygulamaları günlüğe kaydetme ve hata ayıklama

Azure portalı üzerinden her uygulama için performans raporları, trafik görselleştirmeleri ve sistem durumu denetimleri kullanılabilir. Daha fazla bilgi için bkz. Azure Uygulaması Hizmet tanılamalarına genel bakış.

Tanılama günlüklerini akışla aktarma

Kapsayıcının içinden oluşturulan konsol günlüklerine erişebilirsiniz.

İlk olarak, aşağıdaki komutu çalıştırarak kapsayıcı günlüğünü açın:

az webapp log config --name <app-name> --resource-group <resource-group-name> --docker-container-logging filesystem

ve <resource-group-name> öğesini web uygulamanız için uygun adlarla değiştirin<app-name>.

Kapsayıcı günlüğü açıldıktan sonra günlük akışını görmek için aşağıdaki komutu çalıştırın:

az webapp log tail --name <app-name> --resource-group <resource-group-name>

Konsol günlüklerini hemen görmüyorsanız, 30 saniye içinde yeniden kontrol edin.

Günlük akışını istediğiniz zaman durdurmak için Ctrl+C yazın.

Günlük dosyalarını tarayıcıdan https://<app-name>.scm.azurewebsites.net/api/logs/dockerda inceleyebilirsiniz.

Daha fazla bilgi için bkz . Cloud Shell'de akış günlükleri.

Linux'ta SSH konsol erişimi

Kapsayıcınızda doğrudan SSH oturumu başlatabilmek için uygulamanızın çalışıyor olması gerekir.

Aşağıdaki URL'yi tarayıcınıza yapıştırın ve <app-name> yerine kendi uygulamanızın adını yazın:

https://<app-name>.scm.azurewebsites.net/webssh/host

Kimlik doğrulamasından geçmediyseniz bağlantıyı kurabilmek için Azure aboneliğinizle kimliğinizi doğrulamanız gerekir. Kimliğiniz doğrulandıktan sonra kapsayıcınızda komut çalıştırmak için kullanabileceğiniz tarayıcı içi kabuk ortamını görürsünüz.

SSH bağlantısı

Not

/home dizininin dışında yaptığınız değişiklikler kapsayıcıda depolanır ve uygulama yeniden başlatıldığında kalıcı olmaz.

Yerel makinenizden uzak SSH oturumu açmak için bkz. Uzak kabuktan SSH oturumu açma.

Linux sorun giderme araçları

Yerleşik Java görüntüleri Alpine Linux işletim sistemini temel alır. apk Sorun giderme araçlarını veya komutlarını yüklemek için paket yöneticisini kullanın.

Java Profil Oluşturucu

Azure Uygulaması Hizmetindeki tüm Java çalışma zamanları, Java iş yüklerinin profilini oluşturmak için JDK Flight Recorder ile birlikte gelir. Bunu kullanarak JVM, sistem ve uygulama olaylarını kaydedebilir ve uygulamalarınızdaki sorunları giderebilirsiniz.

Java Profiler hakkında daha fazla bilgi edinmek için Azure Uygulaması lication Insights belgelerini ziyaret edin.

Uçuş Kaydedicisi

App Service'te tüm Java çalışma zamanları Java Flight Recorder ile birlikte gelir. Bunu kullanarak JVM, sistem ve uygulama olaylarını kaydedebilir ve Java uygulamalarınızdaki sorunları giderebilirsiniz.

App Service'inize SSH ekleyin ve komutunu çalıştırarak jcmd çalışan tüm Java işlemlerinin listesini görün. Jcmd'nin kendisine ek olarak, Java uygulamanızın bir işlem kimliği numarası (pid) ile çalıştığını görmeniz gerekir.

078990bbcd11:/home# jcmd
Picked up JAVA_TOOL_OPTIONS: -Djava.net.preferIPv4Stack=true
147 sun.tools.jcmd.JCmd
116 /home/site/wwwroot/app.jar

JVM'nin 30 saniyelik kaydını başlatmak için aşağıdaki komutu yürütün. JVM'nin profilini oluşturur ve giriş dizininde jfr_example.jfr adlı bir JFR dosyası oluşturur. (116 değerini Java uygulamanızın pid koduyla değiştirin.)

jcmd 116 JFR.start name=MyRecording settings=profile duration=30s filename="/home/jfr_example.jfr"

30 saniyelik aralık boyunca komutunu çalıştırarak jcmd 116 JFR.checkkaydın gerçekleştiğini doğrulayabilirsiniz. komutu, verilen Java işlemi için tüm kayıtları gösterir.

Sürekli Kayıt

Java uygulamanızın profilini çalışma zamanı performansı üzerinde en az etkiyle sürekli olarak görüntülemek için Java Flight Recorder'ı kullanabilirsiniz. Bunu yapmak için aşağıdaki Azure CLI komutunu çalıştırarak gerekli yapılandırmaya sahip JAVA_OPTS adlı bir Uygulama Ayarı oluşturun. JAVA_OPTS Uygulama Ayarı'nın içeriği, uygulamanız başlatıldığında komuta geçirilir java .

az webapp config appsettings set -g <your_resource_group> -n <your_app_name> --settings JAVA_OPTS=-XX:StartFlightRecording=disk=true,name=continuous_recording,dumponexit=true,maxsize=1024m,maxage=1d

Kayıt başladıktan sonra, komutunu kullanarak istediğiniz zaman geçerli kayıt verilerinin dökümünü JFR.dump alabilirsiniz.

jcmd <pid> JFR.dump name=continuous_recording filename="/home/recording1.jfr"

Dosyaları analiz etme .jfr

JFR dosyanızı yerel makinenize indirmek için FTPS kullanın. JFR dosyasını analiz etmek için Java Mission Control'ü indirip yükleyin. Java Mission Control yönergeleri için JMC belgelerine ve yükleme yönergelerine bakın.

Uygulama günlüğü

Uygulamanızın standart konsol çıkışını ve standart konsol hata akışlarını yerel dosya sistemine veya Azure Blob Depolama yazacak şekilde App Service'i yapılandırmak için Azure portalı veya Azure CLI aracılığıyla uygulama günlüğünü etkinleştirin. Daha uzun bekletmeye ihtiyacınız varsa, uygulamayı bir Blob depolama kapsayıcısına çıkış yazacak şekilde yapılandırın.

Java ve Tomcat uygulama günlükleriniz /home/LogFiles/Application/ dizininde bulunabilir.

Linux tabanlı uygulamalar için Azure Blob Depolama günlüğü yalnızca kullanılarak yapılandırılabilirAzure İzleyici.

Uygulamanız izleme için Logback veya Log4j kullanıyorsa, Application Insights'ta Java izleme günlüklerini keşfetme başlığındaki günlüğe kaydetme çerçevesi yapılandırma yönergelerini kullanarak bu izlemeleri gözden geçirme için Azure Uygulaması lication Insights'a iletebilirsiniz.

Not

Bilinen CVE-2021-44228 güvenlik açığı nedeniyle Log4j sürüm 2.16 veya üzerini kullandığınızdan emin olun.

Özelleştirme ve ayarlama

Azure Uygulaması Hizmeti, Azure portalı ve CLI aracılığıyla kullanıma hazır ayarlamayı ve özelleştirmeyi destekler. Java'ya özgü olmayan web uygulaması yapılandırması için aşağıdaki makaleleri gözden geçirin:

Uygulama İçeriğini Yerel Olarak Kopyalama

Uygulama içeriğinizi paylaşılan dosya sisteminden yerel çalışana kopyalamak için uygulama ayarını JAVA_COPY_ALL true olarak ayarlayın. Bu ayar, dosya kilitleme sorunlarını gidermeye yardımcı olur.

Java çalışma zamanı seçeneklerini ayarlama

Ayrılmış bellek veya diğer JVM çalışma zamanı seçeneklerini ayarlamak için, seçenekleriyle adlı JAVA_OPTS bir uygulama ayarı oluşturun. App Service bu ayarı java çalışma zamanı başlatıldığında ortam değişkeni olarak geçirir.

Azure portalında, web uygulaması için Uygulama Ayarları altında, gibi -Xms512m -Xmx1204mdiğer ayarları içeren adlı JAVA_OPTS yeni bir uygulama ayarı oluşturun.

Azure portalında, web uygulaması için Uygulama Ayarları altında, gibi -Xms512m -Xmx1204mdiğer ayarları içeren adlı CATALINA_OPTS yeni bir uygulama ayarı oluşturun.

Maven eklentisinden uygulama ayarını yapılandırmak için Azure eklentisi bölümüne ayar/değer etiketleri ekleyin. Aşağıdaki örnek belirli bir en düşük ve en yüksek Java yığın boyutunu ayarlar:

<appSettings>
    <property>
        <name>JAVA_OPTS</name>
        <value>-Xms1024m -Xmx1024m</value>
    </property>
</appSettings>

Not

Windows App Service'te Tomcat kullanırken web.config dosyası oluşturmanız gerekmez.

App Service planlarında tek bir dağıtım yuvasına sahip tek bir uygulama çalıştıran geliştiriciler aşağıdaki seçenekleri kullanabilir:

  • B1 ve S1 örnekleri: -Xms1024m -Xmx1024m
  • B2 ve S2 örnekleri: -Xms3072m -Xmx3072m
  • B3 ve S3 örnekleri: -Xms6144m -Xmx6144m
  • P1v2 örnekleri: -Xms3072m -Xmx3072m
  • P2v2 örnekleri: -Xms6144m -Xmx6144m
  • P3v2 örnekleri: -Xms12800m -Xmx12800m
  • P1v3 örnekleri: -Xms6656m -Xmx6656m
  • P2v3 örnekleri: -Xms14848m -Xmx14848m
  • P3v3 örnekleri: -Xms30720m -Xmx30720m
  • I1 örnekleri: -Xms3072m -Xmx3072m
  • I2 örnekleri: -Xms6144m -Xmx6144m
  • I3 örnekleri: -Xms12800m -Xmx12800m
  • I1v2 örnekleri: -Xms6656m -Xmx6656m
  • I2v2 örnekleri: -Xms14848m -Xmx14848m
  • I3v2 örnekleri: -Xms30720m -Xmx30720m

Uygulama yığını ayarlarını ayarlarken App Service planı ayrıntılarınızı gözden geçirin ve bellekte en uygun ayırmayı bulmak için birden çok uygulama ve dağıtım yuvası gerektiğini göz önünde bulundurun.

Web yuvalarını açma

Azure portalında web yuvaları desteğini uygulamanın Uygulama ayarları bölümünden açın. Ayarın geçerli olması için uygulamayı yeniden başlatmanız gerekir.

Aşağıdaki komutla Azure CLI kullanarak web yuvası desteğini açın:

az webapp config set --name <app-name> --resource-group <resource-group-name> --web-sockets-enabled true

Ardından uygulamanızı yeniden başlatın:

az webapp stop --name <app-name> --resource-group <resource-group-name>
az webapp start --name <app-name> --resource-group <resource-group-name>

Varsayılan karakter kodlamayı ayarlama

Azure portalında, web uygulaması için Uygulama Ayarları'nın altında değeriyle -Dfile.encoding=UTF-8adlı JAVA_OPTS yeni bir uygulama ayarı oluşturun.

Alternatif olarak, App Service Maven eklentisini kullanarak uygulama ayarını yapılandırabilirsiniz. Eklenti yapılandırmasına ayar adını ve değer etiketlerini ekleyin:

<appSettings>
    <property>
        <name>JAVA_OPTS</name>
        <value>-Dfile.encoding=UTF-8</value>
    </property>
</appSettings>

JSP dosyalarını önceden derleme

Tomcat uygulamalarının performansını geliştirmek için, App Service'e dağıtmadan önce JSP dosyalarınızı derleyebilirsiniz. Apache Sling tarafından sağlanan Maven eklentisini veya bu Ant derleme dosyasını kullanabilirsiniz.

Not

Günlüklerde robots933456

Kapsayıcı günlüklerinde şu iletiyi görebilirsiniz:

2019-04-08T14:07:56.641002476Z "-" - - [08/Apr/2019:14:07:56 +0000] "GET /robots933456.txt HTTP/1.1" 404 415 "-" "-"

Bu iletiyi güvenle yoksayabilirsiniz. /robots933456.txt, App Service hizmetinin kapsayıcının istek sunmak için uygun olup olmadığını denetlemek için kullandığı işlevsiz bir URL'dir. 404 yanıtı, yolun var olmadığını belirtir ancak App Service bu sayede iyi ve isteklere yanıt vermeye uygun durumda olan kapsayıcıları belirler.

Java çalışma zamanı sürümü seçme

App Service, kullanıcıların JVM'nin Java 8 veya Java 11 gibi ana sürümünü ve 1.8.0_232 veya 11.0.5 gibi düzeltme eki sürümünü seçmesine olanak tanır. Ayrıca, yeni ikincil sürümler kullanılabilir hale geldikçe düzeltme eki sürümünün otomatik olarak güncelleştirilmiş olmasını da seçebilirsiniz. Çoğu durumda üretim uygulamaları sabitlenmiş düzeltme eki JVM sürümlerini kullanmalıdır. Bu, düzeltme eki sürümü otomatik güncelleştirmesi sırasında öngörülemeyen kesintileri önler. Tüm Java web uygulamaları 64 bit JVM'ler kullanır ve yapılandırılamaz.

Tomcat kullanıyorsanız Tomcat'in yama sürümünü sabitlemeyi seçebilirsiniz. Windows'da JVM ve Tomcat'in düzeltme eki sürümlerini bağımsız olarak sabitleyebilirsiniz. Linux'ta Tomcat'in yama sürümünü sabitleyebilirsiniz; JVM'nin düzeltme eki sürümü de sabitlenir ancak ayrı olarak yapılandırılamaz.

İkincil sürümü sabitlemeyi seçerseniz, uygulamadaki JVM ikincil sürümünü düzenli aralıklarla güncelleştirmeniz gerekir. Uygulamanızın daha yeni ikincil sürümde çalıştığından emin olmak için bir hazırlama yuvası oluşturun ve hazırlama yuvasında ikincil sürümü artırın. Uygulamanın yeni ikincil sürümde doğru şekilde çalıştığını onayladıktan sonra hazırlama ve üretim yuvalarını değiştirebilirsiniz.

Kümeleme

App Service, JBoss EAP sürüm 7.4.1 ve üzeri için kümeleme desteği sağlar. Kümelemeye olanak tanımak için web uygulamanızın bir sanal ağ ile tümleştirilmesi gerekir. Web uygulaması bir sanal ağ ile tümleştirildiğinde yeniden başlatılır ve JBoss EAP yüklemesi otomatik olarak kümelenmiş bir yapılandırmayla başlar. JBoss EAP örnekleri, çalışma zamanında ortam değişkeninde gösterilen bağlantı noktalarını kullanarak sanal ağ tümleştirmesinde WEBSITES_PRIVATE_PORTS belirtilen alt ağ üzerinden iletişim kurar. Herhangi bir değerle adlı WEBSITE_DISABLE_CLUSTERING bir uygulama ayarı oluşturarak kümele oluşturmayı devre dışı bırakabilirsiniz.

Not

Sanal ağ tümleştirmenizi bir ARM şablonuyla etkinleştiriyorsanız, özelliğini vnetPrivatePorts el ile değerine 2ayarlamanız gerekir. CLI veya Portaldan sanal ağ tümleştirmesini etkinleştirirseniz, bu özellik sizin için otomatik olarak ayarlanır.

Kümeleme etkinleştirildiğinde, JBoss EAP örnekleri yeni örnekleri bulmak ve küme üyeleri, tanımlayıcıları ve IP adresleri gibi küme bilgilerini kalıcı hale getirmek için FILE_PING JGroups bulma protokollerini kullanır. App Service'te bu dosyalar altındadır /home/clusterinfo/. Başlatacak ilk EAP örneği, küme üyeliği dosyasında okuma/yazma izinleri alır. Diğer örnekler dosyayı okur, birincil düğümü bulur ve kümeye dahil edilecek ve dosyaya eklenecek düğümle eşgüdüm sağlar.

Not

Uygulamanızın başlatılması sırasında eski bulma dosyalarını temizleyerek JBOSS kümeleme zaman aşımlarından kaçınabilirsiniz

Premium V3 ve Yalıtılmış V2 App Service Planı türleri, iş açısından kritik iş yüklerinizin dayanıklılığını ve güvenilirliğini artırmak için isteğe bağlı olarak Kullanılabilirlik Alanları arasında dağıtılabilir. Bu mimari bölge yedekliliği olarak da bilinir. JBoss EAP kümeleme özelliği, alanlar arası yedeklilik özelliğiyle uyumludur.

Otomatik Ölçeklendirme Kuralları

Yatay ölçeklendirme için otomatik ölçeklendirme kurallarını yapılandırırken, kaldırılan her örneğin etkinliğini (veritabanı işlemini işleme gibi) kümenin başka bir üyesine aktaradığından emin olmak için örnekleri artımlı olarak (birer birer) kaldırmak önemlidir. Portalda otomatik ölçeklendirme kurallarınızı ölçeği azaltacak şekilde yapılandırırken aşağıdaki seçenekleri kullanın:

  • İşlem: "Sayıyı azaltma ölçütü"
  • Seyrek erişim: "5 dakika" veya üzeri
  • Örnek sayısı: 1

Artımlı olarak örnek eklemeniz gerekmez (ölçeği genişletme), kümeye aynı anda birden çok örnek ekleyebilirsiniz.

App Service planları

JBoss EAP şu fiyatlandırma katmanlarında kullanılabilir: F1, P0v3, P1mv3, P2mv3, P3mv3, P4mv3 ve P5mv3.

Tomcat temel yapılandırması

Not

Bu bölüm yalnızca Linux için geçerlidir.

Java geliştiricileri Sunucu ayarlarını özelleştirebilir, sorunları giderebilir ve Tomcat'in server.xml dosyası ve yapılandırma ayrıntılarını biliyorlarsa uygulamaları Güvenle Tomcat'e dağıtabilir. Olası özelleştirmeler şunlardır:

  • Tomcat yapılandırmasını özelleştirme: server.xml dosyasını ve Tomcat'in yapılandırma ayrıntılarını anlayarak, sunucu ayarlarını uygulamalarının gereksinimlerine uyacak şekilde ayarlayabilirsiniz.
  • Hata ayıklama: Tomcat sunucusunda bir uygulama dağıtıldığında, geliştiricilerin ortaya çıkabilecek sorunların hatalarını ayıklamak için sunucu yapılandırmasını bilmesi gerekir. Bu, sunucu günlüklerini denetlemeyi, yapılandırma dosyalarını incelemeyi ve oluşabilecek hataları belirlemeyi içerir.
  • Tomcat sorunlarını giderme: Java geliştiricileri kaçınılmaz olarak Tomcat sunucularında performans sorunları veya yapılandırma hataları gibi sorunlarla karşılaşır. Geliştiriciler, server.xml dosyasını ve Tomcat'in yapılandırma ayrıntılarını anlayarak bu sorunları hızla tanılayabilir ve giderebilir ve bu da zaman ve çabadan tasarruf edebilir.
  • Tomcat'e uygulama dağıtma: Bir Java web uygulamasını Tomcat'e dağıtmak için geliştiricilerin server.xml dosyasını ve diğer Tomcat ayarlarını nasıl yapılandıracaklarını bilmesi gerekir. Bu ayrıntıları anlamak, uygulamaların başarıyla dağıtılması ve sunucuda sorunsuz bir şekilde çalışmasını sağlamak için gereklidir.

Java iş yükünüzü (WAR dosyası veya JAR dosyası) barındırmak için yerleşik Tomcat ile bir uygulama oluşturduğunuzda, Tomcat yapılandırması için kutudan çıkardığınız bazı ayarlar vardır. Tomcat Web Sunucusu için varsayılan yapılandırma da dahil olmak üzere ayrıntılı bilgi için Resmi Apache Tomcat Belgeleri'ne başvurabilirsiniz.

Buna ek olarak, tomcat dağıtımı için server.xml başlangıç sırasında daha fazla uygulanan bazı dönüştürmeler vardır. Bunlar Bağlayıcı, Konak ve Vana ayarlarına dönüştürmelerdir.

Tomcat'in en son sürümleri server.xml (8.5.58 ve 9.0.38 ileri) sahiptir. Tomcat'in eski sürümleri dönüşümleri kullanmaz ve sonuç olarak farklı davranışlara sahip olabilir.

Bağlayıcı

<Connector port="${port.http}" address="127.0.0.1" maxHttpHeaderSize="16384" compression="on" URIEncoding="UTF-8" connectionTimeout="${site.connectionTimeout}" maxThreads="${catalina.maxThreads}" maxConnections="${catalina.maxConnections}" protocol="HTTP/1.1" redirectPort="8443"/>
  • maxHttpHeaderSize olarak ayarlanır 16384
  • URIEncoding olarak ayarlanır UTF-8
  • conectionTimeout olarak ayarlanır WEBSITE_TOMCAT_CONNECTION_TIMEOUTve varsayılan olarak 240000
  • maxThreads olarak ayarlanır WEBSITE_CATALINA_MAXTHREADSve varsayılan olarak 200
  • maxConnections olarak ayarlanır WEBSITE_CATALINA_MAXCONNECTIONSve varsayılan olarak 10000

Not

connectionTimeout, maxThreads ve maxConnections ayarları uygulama ayarlarıyla ayarlanabilir

Aşağıda conectionTimeout, maxThreads veya maxConnections değerlerini değiştirmek için kullanabileceğiniz örnek CLI komutları verilmiştir:

az webapp config appsettings set --resource-group myResourceGroup --name myApp --settings WEBSITE_TOMCAT_CONNECTION_TIMEOUT=120000
az webapp config appsettings set --resource-group myResourceGroup --name myApp --settings WEBSITE_CATALINA_MAXTHREADS=100
az webapp config appsettings set --resource-group myResourceGroup --name myApp --settings WEBSITE_CATALINA_MAXCONNECTIONS=5000
  • Bağlayıcı 127.0.0.1 yerine kapsayıcının adresini kullanır

Ana Bilgisayar

<Host appBase="${site.appbase}" xmlBase="${site.xmlbase}" unpackWARs="${site.unpackwars}" workDir="${site.tempdir}" errorReportValveClass="com.microsoft.azure.appservice.AppServiceErrorReportValve" name="localhost" autoDeploy="true">
  • appBaseolarak ayarlanır ve varsayılan olarak yerel olarak ayarlanır AZURE_SITE_APP_BASEWebappsLocalPath
  • xmlBase olarak ayarlanır AZURE_SITE_HOMEve varsayılan olarak /site/wwwroot
  • unpackWARs olarak ayarlanır AZURE_UNPACK_WARSve varsayılan olarak true
  • workDir olarak ayarlanır JAVA_TMP_DIRve varsayılan olarak TMP
  • errorReportValveClass özel hata raporu vanamızı kullanır

Supap

<Valve prefix="site_access_log.${catalina.instance.name}" pattern="%h %l %u %t &quot;%r&quot; %s %b %D %{x-arr-log-id}i" directory="${site.logdir}/http/RawLogs" maxDays="${site.logRetentionDays}" className="org.apache.catalina.valves.AccessLogValve" suffix=".txt"/>
  • directory olarak ayarlanır AZURE_LOGGING_DIRve varsayılan olarak home\logFiles
  • maxDaysWEBSITE_HTTPLOGGING_RETENTION_DAYS, varsayılan olarak [forever] olarak ayarlanır 0 .

Linux'ta, tüm özelleştirmeler aynı, artı:

  • Vanaya bazı hata ve raporlama sayfaları ekler:

    <xsl:attribute name="appServiceErrorPage">
        <xsl:value-of select="'${appService.valves.appServiceErrorPage}'"/>
    </xsl:attribute>
    
    <xsl:attribute name="showReport">
        <xsl:value-of select="'${catalina.valves.showReport}'"/>
    </xsl:attribute>
    
    <xsl:attribute name="showServerInfo">
        <xsl:value-of select="'${catalina.valves.showServerInfo}'"/>
    </xsl:attribute>
    

Sonraki adımlar

Azure hızlı başlangıçları, öğreticileri ve Java başvuru belgelerini bulmak için Java geliştiricileri için Azure merkezini ziyaret edin.