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
eklentisini öğesine
build.gradle
ekleyerek Azure Web Apps için Gradle Eklentisini ayarlayın:plugins { id "com.microsoft.azure.azurewebapp" version "1.10.0" }
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 } }
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:
- VS Code: Visual Studio Code ile Java Web Apps
- IntelliJ IDEA:IntelliJ kullanarak Azure Uygulaması Hizmeti için Merhaba Dünya bir web uygulaması oluşturma
- Eclipse:Eclipse kullanarak Azure Uygulaması Hizmeti için Merhaba Dünya web uygulaması oluşturma
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/docker
da 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.
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.check
kaydı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 ayarlarını yapılandırma
- Özel etki alanı ayarlama
- TLS/SSL bağlamalarını yapılandırma
- CDN ekleme
- Kudu sitesini yapılandırma
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 -Xmx1204m
diğ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 -Xmx1204m
diğ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-8
adlı 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 2
ayarlamanı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ır16384
URIEncoding
olarak ayarlanırUTF-8
conectionTimeout
olarak ayarlanırWEBSITE_TOMCAT_CONNECTION_TIMEOUT
ve varsayılan olarak240000
maxThreads
olarak ayarlanırWEBSITE_CATALINA_MAXTHREADS
ve varsayılan olarak200
maxConnections
olarak ayarlanırWEBSITE_CATALINA_MAXCONNECTIONS
ve varsayılan olarak10000
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">
appBase
olarak ayarlanır ve varsayılan olarak yerel olarak ayarlanırAZURE_SITE_APP_BASE
WebappsLocalPath
xmlBase
olarak ayarlanırAZURE_SITE_HOME
ve varsayılan olarak/site/wwwroot
unpackWARs
olarak ayarlanırAZURE_UNPACK_WARS
ve varsayılan olaraktrue
workDir
olarak ayarlanırJAVA_TMP_DIR
ve varsayılan olarakTMP
errorReportValveClass
özel hata raporu vanamızı kullanır
Supap
<Valve prefix="site_access_log.${catalina.instance.name}" pattern="%h %l %u %t "%r" %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ırAZURE_LOGGING_DIR
ve varsayılan olarakhome\logFiles
maxDays
WEBSITE_HTTPLOGGING_RETENTION_DAYS
, varsayılan olarak [forever] olarak ayarlanır0
.
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.