調整 Liberty
您可以調整 Liberty 的參數和屬性。
關於這項作業
程序
- 調整 JVM。 不論您要配置開發環境或正式作業環境,調整 JVM 都是一個最重要的調整步驟。當您調整 Liberty 的 JVM 時,請使用 ${server.config.dir} 目錄中的 jvm.options 檔。您可以指定您想要使用的每一個 JVM 引數,每行一個選項。 如需相關資訊,請參閱自訂 Liberty 環境。jvm.options 檔的範例如下:
-Xms50m -Xmx256m
在開發環境中,您可能想要伺服器啟動速度更快,因此,請考慮將資料堆大小下限設為小的值,將資料堆大小上限設為您的應用程式所需要的任何值。 在正式作業環境中,將資料堆大小下限和資料堆大小上限設為相同的值,可以避免資料堆的擴充和收縮,從而提供最佳的效能。
- 調整傳輸通道服務。 傳輸通道服務負責管理用戶端連線、HTTP 的 I/O 處理、執行緒儲存區,以及連線儲存區。 對於位於 Liberty 的應用程式,以下是可供改進執行時期效能及/或可調整性的各不同元素的屬性。
- httpOptions 的 maxKeepAliveRequests
- 這個選項指定在啟用持續連線的情況下,單一 HTTP 連線所接受的持續要求數目上限。
-1 值表示無限制。
這個選項支援低延遲或高傳輸量的應用程式及 SSL 連線,適用於建置新連線的成本可能很高的情況。
以下是如何在 server.xml 檔中編寫這個選項的範例:
<httpOptions maxKeepAliveRequests="-1" />
- connectionManager 的 maxPoolSize
- 這個選項指定連線儲存區的實體連線數目上限。
預設值為 50。這裡的最佳設定取決於應用程式的性質。
如果是每個執行緒都含有資料庫連線的應用程式,您可以從對於 coreThreads 屬性的 1:1 對映開始。
以下是如何在 server.xml 檔中編寫這個選項的範例:
<connectionManager ... maxPoolSize="40" />
- connectionManager 的 purgePolicy
- 這個選項指定在儲存區中偵測到過時的連線時,要毀損哪些連線。
預設值是整個儲存區。
只清除失敗的連線有可能比較好。
以下是如何在 server.xml 檔中編寫這個選項的範例:
<connectionManager ... purgePolicy="FailingConnectionOnly" />
- connectionManager 的 numConnectionsPerThreadLocal
- 這個選項指定每個執行程式執行緒所要快取資料庫連線數目。 這個設定可以保留每個執行緒的指定資料庫連線數目,從而使大型多核心 (8+) 機器得到主要的改進。
- 連線使用執行緒本端儲存體,可以增進多執行緒系統上的應用程式效能。
當 numConnectionsPerThreadLocal 設為 1 或以上時,每個執行緒的這些連線都會儲存在執行緒本端儲存體中。
當您使用 numConnectionsPerThreadLocal 時,請考慮兩個其他值:
- 應用程式執行緒的數目
- 連線儲存區的連線數目上限
<connectionManager ... numConnectionsPerThreadLocal="1" />
- dataSource 的 statementCacheSize
- 這個選項指定每個連線所快取的備妥陳述式數目上限。
如果要設定這個選項,請完成下列必要條件:
- 檢閱所有唯一備妥陳述式的應用程式碼(或從資料庫或資料庫驅動程式收集的 SQL 追蹤)。
- 確定快取記憶體大於陳述式的數目。
<dataSource ... statementCacheSize="60" >
- dataSource 的 isolationLevel
- 資料來源隔離層次指定資料的完整性和並行程度,從而控制資料庫的鎖定層次。
以下是從效能最佳(完整性最差)到效能最差(完整性最佳),四個不同的選項。
- TRANSACTION_READ_UNCOMMITTED
- 可能出現錯誤讀取、非連續讀取和幻象讀取。
- TRANSACTION_READ_COMMITTED
- 防止錯誤讀取;可能出現非連續讀取和幻象讀取。
- TRANSACTION_REPEATABLE_READ
- 防止錯誤讀取和非連續讀取;可能出現幻象讀取。
- TRANSACTION_SERIALIZABLE
- 防止錯誤讀取、非連續讀取和幻象讀取。
<dataSource ... isolationLevel="TRANSACTION_READ_COMMITTED">
- 調整預設執行程式。
Liberty 預設執行程式會自行調整,並且會動態新增或移除執行緒,以因應現行工作量。就大部分的工作量來說,執行程式並不需要任何的調整,除非您在建立執行緒時遇到特定問題,建議您不要變更執行程式的任何設定。
必要的話,您可以在 server.xml 檔中,配置 executor 元素的 coreThreads 和 maxThreads 參數,以設定 Liberty 自動調整程式碼的下限和上限。通常不需要 coreThreads 設定,因為執行程式含有積極的防死鎖程式碼,會新增執行緒使執行程式擺脫死鎖情況。防死鎖程式碼很少新增超出所需的執行緒。在此情況下,您可以使用 executor 元素的 maxThreads 參數,來限制執行程式所能建立的執行緒數目。
- 減少 Servlet 的回應時間。
如果要減少 Servlet 的回應時間,請將下列屬性新增到 server.xml 檔中:
<webContainer skipMetaInfResourcesProcessing="true"/>
- 減少閒置伺服器的 CPU 時間。
如果要減少閒置伺服器 CPU 時間,請將下列屬性新增到 server.xml 檔中:
<applicationMonitor dropinsEnabled="false" updateTrigger="disabled"/> <config updateTrigger="disabled"/>
當新增屬性時,您的伺服器不會再監視配置或應用程式更新項目。
- 調整啟動時間。
- CDI 1.2
- 依預設,CDI 1.2 特性會掃描所有應用程式保存檔。CDI 1.2 特性可能大幅增加啟動時間,對大型應用程式的影響最大。
您可以將 enableImplicitBeanArchives 值設為 false,來停用隱含掃描註釋的保存檔。除非保存檔含有 beans.xml 檔,這項設定會跳過保存檔的掃描。
<cdi12 enableImplicitBeanArchives="false"/>
註: 即使 cdi-1.2 特性不在 server.xml 檔的 <features> 區段中,也可能包含在內,因為諸如 webProfile-7.0 和 javaee-7.0 等其他特性會包含 cdi-1.2 特性。請查看 messages.log 檔中的「伺服器已安裝下列特性:」,看看是否已安裝 cdi-1.2。
次主題
- 為安全應用程式調整 Liberty
您可以調整 Liberty,使安全應用程式獲得最佳效能。 - 調整 Liberty 中的聯合 LDAP 儲存庫
您可以監視和調整快取以及 server.xml 檔中的環境定義儲存區元素,以改進聯合 LDAP 儲存庫的效能。
相關參考:


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_tun
檔名:twlp_tun.html