2019-04-08T14:07:56.641002476Z "-" - - [08/Apr/2019:14:07:56 +0000] "GET /robots933456.txt HTTP/1.1" 404 415 "-" "-"
可以放心忽略此消息。 /robots933456.txt
是一个虚拟 URL 路径,应用服务使用它来检查容器能否为请求提供服务。 404 响应只是指示该路径不存在,但它让应用服务知道容器处于正常状态并已准备就绪,可以响应请求。
选择 Java 运行时版本
应用服务允许用户选择 JVM 的主版本(例如 Java 8 或 Java 11)和补丁版本(例如 1.8.0_232 或 11.0.5)。 还可以选择在新的次要版本可用时自动更新补丁版本。 在大多数情况下,生产应用应使用 JVM 的固定补丁版本。 这可防止在补丁版本自动更新期间发生意外中断。 所有 Java Web 应用都使用 64 位 JVM,这是不可配置的。
如果使用 Tomcat,可以选择固定 Tomcat 的补丁版本。 在 Windows 上,可以固定 JVM 和 Tomcat 的补丁版本。 在 Linux 上,可以固定 Tomcat 的补丁版本;JVM 的补丁版本也会被固定,但不能单独配置。
如果选择固定次要版本,则需要定期更新应用上 JVM 的次要版本。 为了确保应用程序在较新的次要版本上运行,请创建一个过渡槽并在暂存站点上递增次要版本。 确认应用程序在新的次要版本上正常运行后,可以交换过渡槽和生产槽。
应用服务支持 JBoss EAP 7.4.1 及更高版本的群集。 若要启用群集,Web 应用必须与虚拟网络集成。 当 Web 应用与虚拟网络集成时,它会重启,JBoss EAP 安装会以集群配置自动启动。 JBoss EAP 实例会在运行时使用 WEBSITES_PRIVATE_PORTS
环境变量中显示的端口,通过虚拟网络集成中指定的子网进行通信。 可以通过创建名为 WEBSITE_DISABLE_CLUSTERING
的具有任何值的应用设置来禁用群集。
如果要启用与 ARM 模板的虚拟网络集成,需要手动将属性 vnetPrivatePorts
设置为值 2
。 如果从 CLI 或门户启用虚拟网络集成,则会自动为你设置此属性。
启用群集后,JBoss EAP 实例使用 FILE_PING JGroups 发现协议来发现新实例并保留群集信息,如群集成员、其标识符和 IP 地址。 在应用服务上,这些文件位于 /home/clusterinfo/
下。 要启动的第一个 EAP 实例会获取对群集成员身份文件的读/写权限。 其他实例会读取文件,查找主节点,并与要包含在群集中并添加到文件中的节点进行协调。
可以通过在应用启动期间清理过时的发现文件来避免 JBOSS 群集超时
可以选择在可用性区域间分布高级 V3 和独立 V2 应用服务计划类型,以提高业务关键型工作负载的复原能力和可靠性。 此体系结构也称为区域冗余。 JBoss EAP 群集功能与区域冗余功能兼容。
自动缩放规则
在配置用于水平缩放的自动缩放规则时,务必以递增方式(一次一个)删除实例,以确保每个被删除的实例可以将其活动(例如处理数据库事务)转移到群集的另一个成员。 在门户中配置用于纵向缩减的自动缩放规则时,请使用以下选项:
操作:“计数递减”
冷却:“5 分钟”或更长时间
实例计数:1
不需要以递增方式添加实例(横向扩展),可以一次将多个实例添加到群集中。
应用服务计划
JBoss EAP 仅适用于高级 v3 和独立 v2 应用服务计划类型。 在公共预览期间在不同层上创建了 JBoss EAP 站点的客户应纵向扩展到“高级”或“独立”硬件层,以避免出现意外行为。
Tomcat 基线配置
本部分仅适用于 Linux。
如果 Java 开发人员了解 server.xml 文件和 Tomcat 的配置详细信息,他们就可以自信地自定义服务器设置、排查问题并将应用程序部署到 Tomcat。 可能的自定义包括:
自定义 Tomcat 配置:通过了解 server.xml 文件和 Tomcat 的配置详细信息,可以微调服务器设置以满足其应用程序的需求。
调试:在 Tomcat 服务器上部署应用程序时,开发人员需要了解服务器配置以调试可能出现的任何问题。 其中包括检查服务器日志、检查配置文件以及识别可能发生的任何错误。
排查 Tomcat 问题:Java 开发人员不可避免地会遇到 Tomcat 服务器问题,例如性能问题或配置错误。 通过了解 server.xml 文件和 Tomcat 的配置详细信息,开发人员可以快速诊断和排查这些问题,从而节省时间和精力。
将应用程序部署到 Tomcat:若要将 Java Web 应用程序部署到 Tomcat,开发人员需要了解如何配置 server.xml 文件和其他 Tomcat 设置。 了解这些详细信息对于成功部署应用程序并确保它们在服务器上顺利运行至关重要。
当你使用内置 Tomcat 创建应用来托管 Java 工作负载(WAR 文件或 JAR 文件)时,Tomcat 配置中有一些现成的设置。 有关详细信息,请参阅 Apache Tomcat 官方文档,其中包括 Tomcat Web 服务器的默认配置。
此外,在启动 Tomcat 发行版时,还会在 server.xml 之上进一步应用某些转换。 这些转换是连接器、主机和阀设置的转换。
Tomcat 的最新版本具有 server.xml(8.5.58 和 9.0.38 及更高版本)。 旧版本的 Tomcat 不使用转换,因此可能会有不同的行为。
<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
设置为 16384
URIEncoding
设置为 UTF-8
conectionTimeout
设置为 WEBSITE_TOMCAT_CONNECTION_TIMEOUT
,默认为 240000
maxThreads
设置为 WEBSITE_CATALINA_MAXTHREADS
,默认为 200
maxConnections
设置为 WEBSITE_CATALINA_MAXCONNECTIONS
,默认为 10000
可以使用应用设置优化 connectionTimeout、maxThreads 和 maxConnections 设置
以下是一条示例 CLI 命令,可用于更改 conectionTimeout、maxThreads 或 maxConnections 的值:
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
连接器使用容器的地址,而不是 127.0.0.1
<Host appBase="${site.appbase}" xmlBase="${site.xmlbase}" unpackWARs="${site.unpackwars}" workDir="${site.tempdir}" errorReportValveClass="com.microsoft.azure.appservice.AppServiceErrorReportValve" name="localhost" autoDeploy="true">
appBase
设置为 AZURE_SITE_APP_BASE
,默认为本地 WebappsLocalPath
xmlBase
设置为 AZURE_SITE_HOME
,默认为 /site/wwwroot
unpackWARs
设置为 AZURE_UNPACK_WARS
,默认为 true
workDir
设置为 JAVA_TMP_DIR
,默认为 TMP
errorReportValveClass
使用我们的自定义错误报告阀
<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
设置为 AZURE_LOGGING_DIR
,默认为 home\logFiles
maxDays
是 WEBSITE_HTTPLOGGING_RETENTION_DAYS
,默认为 0
[永久]
在 Linux 上,它具有所有相同的自定义项,以及:
向阀添加一些错误和报告页:
<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>