Sun Java System Web Proxy Server 4.0.4 管理指南

第 19 章 調校伺服器效能

有許多元素會影響到 Proxy Server 環境的效能,包括代理伺服器用戶端、Proxy Server、原始伺服器及網路。本附錄說明可能改善 Proxy Server 效能的一些調整工作。

本附錄僅供進階管理員使用。調校伺服器時請務必謹慎,在進行任何變更之前,務必做好配置檔案備份。

本附錄包含下列小節:

一般效能注意事項

本小節說明分析 Proxy Server 效能時,應注意的一般領域。

本小節包含下列主題:

存取記錄

停用存取記錄可以提昇 Proxy Server 的效能。不過,如此便無法檢視存取 Proxy Server 之人以及他們請求的頁面。

若要停用 Proxy Server 存取記錄,請在 obj.conf 檔案中為下列指令加入註釋:

Init fn=“flex-init” access=“$accesslog” format.access=“%Ses->client.ip% - %Req->vars.auth-user% [%SYSDATE%] \\”%Req->reqpb.clf-request%\\“ %Req->srvhdrs.clf-status% %Req->srvhdrs.content-length%”...AddLog fn=“flex-log” name=“access”

ACL 快取記憶體調校

依預設,Proxy Server 將會在 ACL 使用者快取記憶體中快取使用者及群組認證結果。您可以使用 magnus.conf 檔案中的 ACLCacheLifetime 指令,控制 ACL 使用者快取記憶體的有效期限。每次參照快取記憶體中的某個項目時,都將計算其生命週期並檢查 ACLCacheLifetime。如果該項目的生命週期大於或等於 ACLCacheLifetime,則不會使用它。

ACLCacheLifetime 的預設值為 120 秒,這表示 Proxy Server 與 LDAP 伺服器處於不同步狀態的時間,最長可長達兩分鐘。將此值設為 0 (零) 將關閉快取記憶體,並迫使 Proxy Server 於每次使用者請求認證時都必須查詢 LDAP 伺服器。若 Proxy Server 實作存取控制,則此種設定會對 Proxy Server 的效能造成負面影響。若將 ACLCacheLifetime 設為較大的值,則每次對 LDAP 項目進行變更時,可能都必須重新啟動 Proxy Server,因為此種設定會迫使 Proxy Server 查詢 LDAP 伺服器。請僅在 LDAP 目錄不經常變更時,才設定一個較大的值。

ACLUserCacheSizemagnus.conf 中的一個參數,配置快取記憶體中可以保留的項目數目上限。此參數的預設值為 200。新的項目會增加至清單開頭,而且當快取記憶體的大小達到最大值時,位於此清單尾端的項目會回收以建立新的項目。

您也可以使用 ACLGroupCacheSize 參數,設定每個使用者項目可以快取的群組成員數上限。群組中非成員身份的使用者不會被快取,這將導致每個請求都要進行數個 LDAP 目錄存取。

緩衝區大小

您可以指定伺服器通訊端的傳送緩衝區 (SndBufSize) 及接收緩衝區 (RcvBufSize) 的大小。這些參數都可於 magnus.conf 檔案中配置。建議值會因不同的 UNIX 及 Linux 作業系統而異。請參閱作業系統文件,以正確設定這些參數。

連線逾時

您可以使用 magnus.conf 檔案中的 AcceptTimeout 參數數,指定伺服器於關閉連線前,需等候幾秒待用戶端傳送的資料到達。如果逾時時間已到但資料仍未到達,連線將會關閉。此參數預設為 30 秒。在大多數情況下,您不需要變更此設定。若將此參數值設為低於預設值,可以釋放出一些執行緒,但卻可能會使連線速度較慢的使用者中斷連線。

錯誤記錄層級

提高 server.xml () 檔案中的 LOG 標籤的記錄層級屬性,會導致伺服器在錯誤記錄中產生並儲存更多資訊。不過,將項目寫入至該檔案會影響效能。僅在進行問題除錯時才提高記錄層級,不使用疑難排解模式時則降低記錄層級。

安全性需求

啟用 SSL 可提高 Proxy Server 的私密性與安全性,但也會影響到效能,因為將封包加密和解密會需要經常性耗用時間。您可以考慮將加密和解密處理工作移至硬體加速卡。

Solaris 檔案系統快取

Proxy Server 快取不儲存在隨機存取記憶體中。每當從快取擷取文件時,即會向檔案系統存取檔案。您可以考慮使用 Solaris 檔案系統快取,將 Proxy Server 快取預先載入記憶體。之後只要參照已快取的檔案,就會從記憶體中擷取,而非從檔案系統擷取。

逾時值

逾時對伺服器效能的影響巨大。為 Proxy Server 設定最合適的逾時值,有助於節省網路資源。

若要配置 Proxy Server 內的逾時值,可使用兩個針對實例的 SAF (伺服器應用程式函數) 及一個全域參數:

init-proxy() SAF (obj.conf 檔案)

init-proxy() 函數會初始化 Proxy Server 的內部設定。Proxy Server 初始化時會呼叫此函數,但您仍然應該在 obj.conf 檔案中指定此函數,才能正確初始化各個參數值。

此函數的語法如下:

Init fn=init-proxy timeout=seconds timeout-2=seconds

在上述範例中,下列參數會直接套用至 Proxy Server 的 init-proxy SAF 逾時設定:

http-client-config() SAF (obj.conf 檔案)

http-client-config 函數可配置 Proxy Server 的 HTTP 用戶端。

此函數的語法如下:

Init fn=http-client-config
  keep-alive=(true|false)
  keep-alive-timeout=seconds
  always-use-keep-alive=(true|false)
  protocol=HTTP Protocol
  proxy-agent="Proxy-agent HTTP request header"

其設定為:

KeepAliveTimeout() SAF (magnus.conf 檔案)

KeepAliveTimeout() 參數決定伺服器將用戶端與 Proxy Server 之間的 HTTP 持續作用連線或永久性連線保持開啟的最長時間 (以秒為單位)。預設為 30 秒。如果閒置超過 30 秒,連線即逾時。最長為 300 秒 (5 分鐘)。


注意 – 注意 –

magnus.conf 檔案中的逾時設定會套用至用戶端和 Proxy Server 之間的連線。obj.conf 檔案中的 http-client-config SAF 逾時設定則會套用至 Proxy Server 與原始伺服器之間的連線。


最新狀態檢查

Proxy Server 提升效能的方法,是從本機快取提供文件,而非從原始伺服器獲得。此方法的缺點之一是可能會提供已過時的文件。

Proxy Server 可執行檢查,確定快取中是否為最新文件,若文件已過時,則會重新整理快取的版本。只在必要時才執行最新狀態檢查,因為經常檢查文件會降低 Proxy Server 的整體效能。

最新狀態檢查是在 [Caching] 標籤的 [Set Cache Specifics] 頁面配置。預設值是每隔兩小時檢查是否有新文件。此項資訊是在 ObjectType 指令中,使用 max-uncheck 參數配置。

若要在提昇伺服器效能的同時確保文件為最新版本,請自訂最新狀態檢查,方法是結合 last-modified 因子來確定合理的文件使用期限。

Last-Modified 因子

Last-Modified 因子有助於根據已有記錄的先前變更來確定文件變更的可能性。

Last-Modified 因子是介於 .02 和 1.0 之間的分數。其值需乘以文件上次實際修改時間,和上次對文件執行最新狀態檢查時間兩者的間隔。將所得數字和自上次執行最新狀態檢查以來的時間做比較。如果此數字小於時間間隔,表示文件尚未過期。但是,如果此數字大於時間間隔,則表示文件已過期,並且需從原始伺服器取得新的文件版本。

Last-modified 因子可讓您確定最近變更過的文件的檢查頻率會高於舊文件的檢查頻率。

應將 Last-modified 因子設定在 0.1 和 0.2 之間。

DNS 設定

DNS 是用於在標準 IP 位址與主機名稱之間建立關聯的系統。此系統若配置不當,就會佔用有價值的 Proxy Server 資源。若要使效能最佳化,請考慮下列選項:

執行緒數目

magnus.conf 檔案中的 RqThrottle 參數,用來指定 Proxy Server 可以處理的同步作業事件數目上限。預設值為 128。變更此值即可調節伺服器,減少所執行作業事件的延遲狀況。

伺服器為了計算同步請求數,會計算使用中的請求數目。新請求到達時伺服器會將該數字加上 1,完成請求時則會減掉 1。當新請求到達時,伺服器會檢查正在處理的請求是否到達了最大數目。如果已達到限制,則會等到使用中的請求數目低於數目上限時,才開始處理新的請求。

您可以檢視由 perfdump 產生的資料 SessionCreationInfo 部分,或檢視 proxystats.xml 資料,以監視同步請求數目。可以透過此資訊確定與執行緒的總數 (限制) 相比,同步 (尖峰) 請求的最大數目。下列資訊取自 perfdump 輸出:

SessionCreationInfo:
------------------------
Active Sessions          1
Keep-Alive Sessions      0
Total Sessions Created   48/128

[Active Sessions] 顯示目前在處理請求的階段作業數目 (請求處理執行緒)。[Keep-Alive Sessions] 與 [Active Sessions] 相似,但僅限於持續作用的連線。[Total Sessions Created] 顯示已建立的階段作業數及允許的階段作業數上限。這些值分別為 RqThrottle 值的最小值和最大值。


注意 – 注意 –

RqThrottleMin 是伺服器啟動時,所啟動的最小執行緒數目。預設值為 48。此參數也可以在 magnus.conf 檔案中設定,但依預設並不會顯示。


達到所配置的執行緒數目上限不一定是壞事。您不需要因此自動增加 RqThrottle 值。達到此限制意味著伺服器在尖峰負載期間需要這麼多數目的執行緒。只要伺服器可以及時處理請求,就表示伺服器的調校得當。不過,這個時候連線會在連線佇列等候,可能會因此造成佇列溢位。如果您的 perfdump 輸出經常顯示已建立的階段作業總數值常接近 RqThrottle 上限,可考慮提高執行緒限制。

合適的 RqThrottle 值應介於 100 到 500 之間,視負載而定。

傳入連線池

可以使用 magnus.conf 中的 KeepAlive* 設定及相關設定調校傳入連線池,包括下列項目:

如需有關這些參數的更多資訊,請參閱「Sun ONE Web Server 6.1 Performance Tuning, Sizing, and Scaling Guide」第 2 章,其位於:

http://docs.sun.com/app/docs/doc/819-6516/

此 Proxy Server 發行版本無法配置傳出連線池設定。

FTP 清單寬度

提高 FTP 清單寬度可接受較長的檔案名稱,從而減少檔案名稱被截斷的情況。預設寬度為 80 個字元。

要修改 FTP 清單寬度,請選擇 Server Manager [Preferences] 標籤下的 [Tune Proxy] 連結。

快取架構

妥善配置快取可以改善伺服器效能。架構快取時,應注意的建議事項:

適當的快取設定對 Proxy Server 的效能極為重要。在配置代理伺服器快取時需牢記的最重要的規則就是要分散負載。每個分割區可設定約 1 GB 快取記憶體,且應將其分散至多個磁碟及多個磁碟控制器。此種安排在建立及擷取檔案速度上,要比一個單獨的大型快取記憶體快許多。

快取批次更新

快取批次更新功能可讓您從指定的網站預先載入檔案,或對快取記憶體中已經存在的文件執行最新狀態檢查。通常在 Proxy Server 的負載達到最低時,才會啟動此作業。您可以在 [Cache Batch Updates] 頁面中建立、編輯及刪除 URL 批次,以及啟用與停用批次更新。

您可以指定要以批次方式更新的檔案,以便主動快取內容,而不只是在要求時才快取。Proxy Server 可讓您對快取記憶體中的多個檔案執行最新狀態檢查,或從某特定網站預先載入多個檔案。

在具有伺服器及代理伺服器網路的大型網站中,建議您以批次更新方式來預先載入 Web 的指定區域。批次處理會對文件中的連結執行遞迴下降,並將內容快取到本機上。此項功能可能會造成遠端伺服器的負擔,因此請謹慎使用。在 bu.conf 配置檔案中的參數可避免此程序無限期執行遞迴,並對此程序提供某種程度的控制。

請使用 Proxy Server 存取記錄來確定哪些網站最常更新,並對那些網站執行批次更新以提昇效能。

資源回收

資源回收是指檢視 Proxy Server 快取,然後移除陳舊檔案的程序。資源回收是一項密集使用資源的處理程序。因此,建議您調校一些資源回收設定,以提高其效能。

下列參數可微調資源回收程序。您可以在 Server Manager 的 [Caching] 標籤下選擇 [Tune GC],以取得 [Tune Garbage Collection] 表單,並於此檢視或修改這些參數。 這些參數包括:

gc hi margin percent 變數

gc hi margin percent 變數可控制快取記憶體大小百分比的上限,當達到此百分比時,就會觸發資源回收。

此值必須大於 gc lo margin percent 的值。

gc hi margin percent 的有效範圍介於 10% 到 100% 之間。預設值為 80%,表示當快取記憶體的使用容量達到 80% 時,即會觸發資源回收。

gc lo margin percent 變數

gc lo margin percent 變數可控制快取記憶體大小百分比的上限,資源回收器以此百分比為目標。

此值必須低於 gc hi margin percent 的值。

gc lo margin percent 的有效範圍為 5% 到 100% 之間。預設值為 70%。表示其目標為資源回收後,快取記憶體使用量應該達到 70%。

gc extra margin percent 變數

如果觸發資源回收的原因不是因為分割區的大小接近允許的大小上限 (gc hi margin percent),則資源回收將使用 gc extra margin percent 變數設定的百分比,以決定應移除的快取部分。

gc extra margin percent 的有效範圍為 0% 到 100% 之間。預設值為 30%,表示會移除現有快取檔案的 30%。

gc leave fs full percent 變數

gc leave fs full percent 值決定快取分割區大小的百分比,若低於此值將不會進行資源回收。若其他應用程式獨佔了磁碟空間,此值可防止資源回收移除快取中的所有檔案。

gc leave fs full percent 的有效範圍為 0% (允許全部移除) 到 100% (不允許移除)。預設值為 60%,此值允許將快取大小縮減為其現行大小的 60%。

Solaris 效能調校

Solaris 核心中有各種參數可用來微調 Proxy Server 效能。下表列出部分的參數。

表 19–1 Solaris 效能調校參數

參數 

範圍 

預設值 

調校值 

註釋 

rlim_fd_max

/etc/system 

1024 

8192 

程序開啟檔案描述元限制。應涵蓋相關通訊端、檔案及管道 (如果有的話) 的預期負載。 

rlim_fd_cur

/etc/system 

64 

8192 

 

sq_max_size

/etc/system 

控制串流驅動程式佇列大小。設定此參數為 0 表示效能執行不會由於缺乏緩衝區空間而受到影響。用戶端也須設定此參數。 

tcp_close_wait_interval

ndd/dev/tcp 

240000 

60000 

用戶端也須設定此參數。 

tcp_conn_req_max_q

ndd/dev/tcp 

128 

1024 

 

tcp_conn_req_max_q0

ndd/dev/tcp 

1024 

4096 

 

tcp_ip_abort_interval

ndd/dev/tcp 

480000 

60000 

 

tcp_keepalive_interval 

ndd/dev/tcp 

7200000 

900000 

對於高流量的網站,請降低此值。 

tcp_rexmit_interval_initial

ndd/dev/tcp 

3000 

3000 

如果重新傳輸作業的數量大於 30-40%,請提高此值。 

tcp_rexmit_interval_max

ndd/dev/tcp 

240000 

10000 

 

tcp_rexmit_interval_min

ndd/dev/tcp 

200 

3000 

 

tcp_smallest_anon_port

ndd/dev/tcp 

32768 

1024 

用戶端也須設定此參數。 

tcp_slow_start_initial

ndd/dev/tcp 

少量資料的傳輸速度會稍微快一點。 

tcp_xmit_hiwat

ndd/dev/tcp 

8129 

32768 

使用此參數以提高傳輸緩衝區。 

tcp_recv_hiwat

ndd/dev/tcp 

8129 

32768 

使用此參數以提高接收緩衝區。 

如需有關這些參數的更多資訊,請參閱「Sun ONE Web Server 6.1 Performance Tuning, Sizing, and Scaling Guide」第 5 章,其位於:

http://docs.sun.com/app/docs/doc/819-6516/