本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
自訂 Lambda 函數的 Java 執行時期啟動行為
本頁說明 AWS Lambda 中 Java 函數的特定設定。您可以使用這些設定來自訂 Java 執行期啟動行為。這可以減少整體函數延遲並提高整體函數效能,而無需修改任何程式碼。
了解 JAVA_TOOL_OPTIONS
環境變數
在 Java 中,Lambda 支援 JAVA_TOOL_OPTIONS
環境變數,以在 Lambda 中設定其他命令列變數。您可以透過各種方式使用此環境變數,例如自訂分層編譯設定。下一個範例將示範如何針對此使用案例使用 JAVA_TOOL_OPTIONS
環境變數。
範例:自訂分層編譯設定
分層編譯是 Java 虛擬機器 (JVM) 的功能。您可以使用特定的分層編譯設定來充分利用 JVM 的即時 (JIT) 編譯器。通常,C1 編譯器針對快速啟動時間進行了最佳化。C2 編譯器針對最佳整體效能進行了最佳化,但也使用更多記憶體,並且需要更長的時間來達成目標。
有 5 個不同等級的分層編譯。在層級 0,JVM 會解譯 Java 位元組程式碼。在層級 4,JVM 會使用 C2 編譯器來分析應用程式啟動期間收集的分析資料。隨著時間的推移,它會監控程式碼使用情況以識別最佳化。
自訂分層編譯等級可協助您減少 Java 函數冷啟動延遲。例如,將分層編譯等級設定為 1 可讓 JVM 使用 C1 編譯器。此編譯器可以快速產生最佳化的原生程式碼,但不會產生任何分析資料,也不會使用 C2 編譯器。
在 Java 17 執行期中,分層編譯的 JVM 標誌預設設定為在級別 1 停止。對於 Java 11 執行期及更低版本,可以透過執行以下步驟將分層編譯級別設為 1:
自訂分層編譯設定 (主控台)
-
開啟 Lambda 主控台中的函數
頁面。 -
選擇您要自訂分層編譯的 Java 函數。
-
選擇組態索引標籤,然後選擇左側選單中的環境變數。
-
選擇編輯。
-
選擇 Add environment variable (新增環境變數)。
-
針對索引鍵,輸入
JAVA_TOOL_OPTIONS
。針對值,輸入-XX:+TieredCompilation -XX:TieredStopAtLevel=1
。 -
選擇儲存。
注意
您也可以使用 Lambda SnapStart 來解決冷啟動問題。SnapStart 會使用執行環境的快取快照來顯著改善啟動效能。如需有關 SnapStart 功能、限制和支援區域的詳細資訊,請參閱使用 Lambda 改善啟動效能 SnapStart。
範例:使用 JAVA_TOOL_OPTIONS 自訂 GC 行為
Java 11 執行期使用串行JAVA_TOOL_OPTIONS
環境變數來變更預設垃圾回收器。可以在並行垃圾回收器和 Shenandoah
例如,如果工作負載使用更多記憶體和多個 CPU,則請考慮使用並行垃圾回收器以獲得更好的效能。可以透過將下列內容附加到 JAVA_TOOL_OPTIONS
環境變數的值來執行此操作:
-XX:+UseParallelGC