前文測試中,直接訪問站點 URL 看到的是系統自帶測試頁面 index.jsp (位於 /site/wwwroot/webapps/ROOT,Tomcat 預設根目錄)。為驗證 JVM 參數修改是否生效,需撰寫測試代碼列印 JVM 參數與記憶體資訊。
/site/wwwroot/webapps/ROOT,下載 index.jsp。index.jsp 加入 JVM 監控代碼 (使用 ManagementBeans 取得 heap/non-heap 大小、記憶體池詳情)。完整代碼見 GitHub。
小型實例 (1 core, 1.75GB RAM) 下:
初始 Heap 28664K,已用 ~54MB,最大 433MB。
PermGen:init=21504K, used=40890K, committed=40960K, max=83968K。

將實例升級為中型,預設 Heap 大小自動變化:

Azure 如何動態調整 Tomcat 參數?底層為 Windows Server + IIS,透過 HttpPlatformHandler 模組管理第三方伺服器 (Tomcat/Jetty/Node.js):
web.config 配置實現。需求:修改 Heap Size 與 PermGen 大小 (避免 OOM)。在 web.config 設定 JAVA_OPTS:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers/>
<httpPlatform arguments="" processPath="%AZURE_TOMCAT7_HOME%\bin\startup.bat">
<environmentVariables>
<environmentVariable name="CATALINA_OPTS" value="-Dport.http=%HTTP_PLATFORM_PORT%" />
<environmentVariable name="JAVA_OPTS" value="-Djava.net.preferIPv4Stack=true -Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m" />
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>
注意: 預設 Tomcat 路徑 %AZURE_TOMCAT7_HOME%\bin\startup.bat,Java 參數放入 JAVA_OPTS。
上傳 web.config 至 /site/wwwroot,刷新測試頁:

透過 web.config + HttpPlatformHandler 成功實現 Azure 站點 Java 環境定制化。