Proxy 伺服器疑難排解
這個主題協助您解決您可能遇到的 Proxy 伺服器問題。
關於這項作業
Proxy 伺服器錯誤會記載在工作日誌中,如果您有 Proxy 伺服器方面的問題,請參閱下列清單。
Proxy 伺服器錯誤記載在 SystemOut.log、proxy.log 或 local.log 檔中。如果您有 Proxy 伺服器方面的問題,請參閱下列清單。
程序
- 已順利建立 Proxy 伺服器,但卻無法啟動。 請檢查 SYSOUT 檔,瞭解是否發生埠衝突。使用 netstat –a 指令,查看 Proxy 伺服器任何相關聯的端點是否已在使用中。您可以按一下 > 伺服器 > Proxy 伺服器 > <server_name> > 埠,在管理主控台中尋找埠。當您在 UNIX 系統上嘗試以非特許使用者身分啟動 Proxy 伺服器時,如果啟動失敗,請檢查日誌中是否有下列訊息:
請變更 PROXY_HTTP_ADDRESS 和 PROXY_HTTPS_ADDRESS 傳輸鏈的埠值,使其大於 1024。ChannelFramew E CHFW0029E: Error initializing chain HTTPS_PROXY_CHAIN because of exception com.ibm.wsspi.channel.framework.exception.RetryableChannelException: Permission denied TCPPort E TCPC0003E: TCP Channel TCP_7 initialization failed. The socket bind failed for host * and port 80. 該埠可能已在使用中。
- Proxy 伺服器經由管理埠將要求遞送至 Web 儲存器。 Proxy 伺服器位於數個 Web 儲存器前端。配置會要求 Web 儲存器接聽非預設埠,例如 9061、9081 等。如果有多部應用程式伺服器位於相同機器上,此實務是預設情況,亦即,會強迫在配置中使用新的和不同的埠。在此實務中,Proxy 伺服器將應用程式要求遞送至 Web 儲存器時,可能經由管理埠 9061,而非使用預期埠 9081。
請將 Web 儲存器的接聽埠號,新增至目標應用程式相關聯的虛擬主機。這項程序可確保 Proxy 伺服器經由正確埠號,將要求遞送至 Web 儲存器。
- Proxy 伺服器已啟動,但是我無法經由 Proxy 伺服器的端點存取應用程式資源。 請確定 Proxy 伺服器的端點是虛擬主機中與應用程式相關聯的一些主機別名。
- Proxy 伺服器遞送至另一個核心群組。 請驗證 Cell 中的核心群組之間有核心群組橋接器,且選作橋接器的程序已重新啟動。如果核心群組之間有防火牆,請驗證已開啟正確埠,使核心群組橋接器進行資料傳輸。
- Proxy 伺服器無法將要求遞送給另一個 Cell。 請檢閱核心群組橋接器的設定。只要有伺服器(通常是擔任核心群組橋接器的伺服器)記載了 HMGR0149E 錯誤訊息,就需修改 Cell 的安全設定,以容許通訊。
如需在多個 Cell 之間配置 Cell 安全的相關資訊,請參閱標題為匯出「小型認證機構」金鑰的主題。
- 發出要求到 Proxy 時收到空白頁。 請考量執行下列動作:
- 更新虛擬主機。請確定已將目標應用程式和遞送規則,指派給含有 Proxy 伺服器接聽埠(預設值:HTTP 80,HTTPS 443)的虛擬主機。將 Proxy 伺服器接聽埠新增至應用程式或遞送規則的虛擬主機,或使用 proxy_host 虛擬主機。
- 停止衝突的程序。請檢查您的系統,確定沒有其他使用 Proxy 伺服器埠(預設值:HTTP 80,HTTPS 443)的程序
(例如 Apache、IBM HTTP Server 等)在執行中。如果發生此問題,Proxy 伺服器看似正常啟動,但卻無法接收受影響接聽埠上的要求。請依如下所示檢查您的系統:
- 停止 Proxy 伺服器。
- 使用 netstat 和 ps 指令查詢您的系統,判斷是否有不當的程序正在使用 Proxy 伺服器的接聽埠。
- 如果找到不當的程序,請停止該程序並配置您的系統,使該程序不會在系統啟動期間啟動。
- 啟用 Proxy 遞送。請確定已針對應用程式的 Web 模組啟用 Proxy 遞送。依預設,會啟用 Proxy 遞送,因此只要未修改 Proxy 內容,可不理會這項解決方案。否則,請參閱自訂遞送至應用程式,取得修改 Proxy 內容的相關指示。
- 測試直接要求。請直接發出要求給應用程式伺服器,來確定目標應用程式已安裝。如果沒有收到回應,表示問題出在應用程式伺服器,而不是 Proxy 伺服器。在您可以直接從應用程式伺服器收到回應之後,請經由 Proxy 伺服器來驗證此情況。
- 收到 Proxy 伺服器的 HTTP 404(找不到檔案)錯誤。 請考量執行下列動作:
- 更新虛擬主機。請確定已將目標應用程式和遞送規則,指派給含有 Proxy 伺服器接聽埠(預設值:HTTP 80,HTTPS 443)的虛擬主機。將 Proxy 伺服器接聽埠新增至應用程式或遞送規則的虛擬主機,或使用 proxy_host 虛擬主機。
- 啟用 Proxy 遞送。請確定已針對應用程式的 Web 模組啟用 Proxy 遞送。依預設,會啟用 Proxy 遞送,因此只要未修改 Proxy 內容,可不理會這項解決方案。否則,請參閱自訂遞送至應用程式,取得修改 Proxy 內容的相關指示。
- 測試直接要求。請直接發出要求給應用程式伺服器,來確定目標應用程式已安裝。如果沒有收到回應,表示問題出在應用程式伺服器,而不是 Proxy 伺服器。當您可以直接從應用程式伺服器收到回應時,請經由 Proxy 伺服器來驗證此情況。
- 無法發出 Secure Sockets Layer (SSL) 要求給應用程式或遞送規則。 請確定應用程式或遞送規則的虛擬主機包含 Proxy 伺服器 SSL 埠 (預設值:443)的主機別名。
- 無法連接 Proxy 伺服器...要求逾時。 停止衝突的程序。請檢查您的系統,確定使用 Proxy 伺服器埠(預設值:HTTP 80,HTTPS 443)的其他程序
(例如 Apache、IBM HTTP Server 等)都不在執行中。如果發生此狀況,Proxy 伺服器看似正常啟動,但卻無法接收受影響接聽埠上的要求。請依如下所示檢查您的系統:
- 停止 Proxy 伺服器。
- 使用 netstat 和 ps 指令查詢您的系統,判斷是否有不當的程序正在使用 Proxy 伺服器的接聽埠。
- 如果找到不當的程序,請停止該程序並配置您的系統,使該程序不會在系統啟動期間啟動。
- 在發生 HTTP 錯誤(例如 404)時,未收到錯誤頁面應用程式的回應。 請確定所輸入的錯誤頁面 URI 正確。此外,如果您正在處理來自後端伺服器的 HTTP 錯誤回應,請確定已選取「處理遠端錯誤」選項。如需詳細資訊,請參閱自訂錯誤頁面原則概觀和 Proxy 伺服器設定中的自訂錯誤頁面原則區段。
- 在追蹤 Proxy 伺服器時,我要啟用哪些套件? 不論是哪一種追蹤,並不需要下列所有套件,但是如果您不確定,全都可以使用:
- *=info
- WebSphere Proxy=all
- GenericBNF=all
- HAManager=all
- HTTPChannel=all
- TCPChannel=all
- WLM*=all
- DCS=all
- ChannelFrameworkService=all
- com.ibm.ws.dwlm.*=all
- com.ibm.ws.odc.*=all
- 如何啟用 SSL 裝載/卸載? SSL 裝載/卸載是指管理主控台中的傳輸通訊協定,而傳輸通訊協定是一個 Web 模組內容。請參閱自訂遞送至應用程式,瞭解如何配置 Web 模組內容。遞送規則並無 SSL 裝載/卸載或傳輸通訊協定內容,這是因為遞送規則中指定的通用伺服器叢集本來就有傳輸通訊協定。
- 當前端有 IBM HTTP Server 或 Web 伺服器外掛程式時,該如何配置 Proxy 伺服器,才不必將其埠新增至虛擬主機? 如果要 Proxy 伺服器信任要求中包含的安全相關資訊(例如:產品所新增的私密標頭),請將要求的發送端新增至 Proxy 伺服器的授信安全 Proxy 清單。例如,將負責傳送要求至 Proxy 伺服器的 IBM HTTP Server 或 Web 伺服器外掛程式,新增至 Proxy 伺服器的授信安全 Proxy 清單。之後 Web 伺服器外掛程式就可以傳送產品新增的私密標頭資訊 (內含要求的虛擬主機資訊)。如果 Proxy 不信任 Web 伺服器外掛程式或任何用戶端傳來的這些私密標頭,Proxy 伺服器會將其本身的私密標頭(需要新增 Proxy 伺服器的 HTTP 和 HTTPS 埠),新增至虛擬主機。一般而言,Web 伺服器外掛程式與 Proxy 伺服器搭配使用的用意在於,使用 Proxy 伺服器作為後端伺服器。因此,您必須新增該外掛程式作為授信安全 Proxy,以免得公開 Proxy 伺服器埠。將外掛程式的要求遞送至 Proxy 伺服器提供將 Web 伺服器外掛程式配置成與 Proxy 伺服器搭配使用的相關資訊。Proxy 伺服器設定提供設定授信安全 Proxy 的相關資訊。
- Proxy 伺服器似乎被迫停擺,或是 ffdc 或 SystemErr.log 中顯示「開啟太多檔案」異常狀況。 在高度連線負載下,檔案系統描述子數目可能耗盡,且 Proxy 伺服器似乎停擺,並因無法開啟 Socket,而在 ffdc 目錄或 SystemError.log 檔中放置「開啟太多檔案」異常狀況。如果要紓解這個問題,請在作業系統層次和 Proxy 伺服器層次,修改下列一或多個參數,使 Proxy 伺服器連線的使用達到最佳:
Windows 2003 和 XP 作業系統調整
- TcpTimedWaitDelay - 決定必須歷時多久,TCP/IP 才能釋出已關閉的連線,並重複使用其資源。這項關閉和釋出的間隔時間稱為
TIME_WAIT 狀態,或是區段生命期限上限的兩倍 (2MSL) 狀態。在這段期間,重新開啟用戶端及伺服器連線所耗費的成本,比建立新連線少。藉由降低此項目的值,TCP/IP 可以更快釋出已關閉的連線,並提供更多資源給新連線。如果執行中的應用程式需要快速釋出、建立新連線,或因多條連線處於 TIME_WAIT 狀態,造成傳輸量偏低而需要調整,請調整這個參數。請檢視或設定此值,如下所示:
- 使用 regedit 指令,並存取 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\TCPIP\Parameters 登錄次機碼,以建立名稱是 TcpTimedWaitDelay 的新 REG_DWORD 值。
- 將值設為十進位 30,亦即十六進位 0x0000001e。此值是將等待時間設為 30 秒。
- 停止並重新啟動系統。
資訊 值 預設值 0xF0,亦即,將等待時間設為 240 秒(4 分鐘)。 建議值 最小值 0x1E,亦即,將等待時間設為 30 秒。 - MaxUserPort - 決定當應用程式向系統索取可用的使用者埠時,TCP/IP 所能指派的最高埠號。請檢視或設定此值,如下所示:
- 使用 regedit 指令,存取 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\TCPIP\Parameters 登錄次機碼,並建立名稱是 MaxUserPort 的新 REG_DWORD 值。
- 將此值至少設為 32768(十進位)。
- 停止並重新啟動系統。
資訊 值 預設值 無 建議值 至少 32768(十進位)。
- TcpTimedWaitDelay - 決定必須歷時多久,TCP/IP 才能釋出已關閉的連線,並重複使用其資源。這項關閉和釋出的間隔時間稱為
TIME_WAIT 狀態,或是區段生命期限上限的兩倍 (2MSL) 狀態。在這段期間,重新開啟用戶端及伺服器連線所耗費的成本,比建立新連線少。藉由降低此項目的值,TCP/IP 可以更快釋出已關閉的連線,並提供更多資源給新連線。如果執行中的應用程式需要快速釋出、建立新連線,或因多條連線處於 TIME_WAIT 狀態,造成傳輸量偏低而需要調整,請調整這個參數。
Linux 作業系統調整
- timeout_timewait 參數 - 決定必須歷時多久,TCP/IP 才能釋放已關閉的連線,以及可以重複使用其資源。這項關閉和釋出的間隔時間稱為 TIME_WAIT 狀態,或是區段生命期限上限的兩倍 (2MSL) 狀態。在這段期間,重新開啟用戶端及伺服器連線所耗費的成本,比建立新連線少。藉由降低此項目的值,TCP/IP 可以更快釋放已關閉的連線,以提供更多資源給新連線。如果執行中的應用程式需要快速釋出、建立新連線,或因多條連線處於 TIME_WAIT 狀態,而造成傳輸量偏低,請調整這個參數。請檢視或設定此值,作法是發出下列指令,將 timeout_timewait 參數設為 30 秒:
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
- Linux 檔案描述子 (ulimit) - 指定支援的開啟檔案數目。一般而言,預設值對於大部分應用程式是足夠的。如果設定給此參數的值太小,可能會顯示檔案開啟錯誤、記憶體配置失敗,或是連線建立錯誤。
請檢視或設定此值,作法是檢查 UNIX ulimit 指令參考頁面,取得不同 Shell 的語法。若為 KornShell Shell (ksh),請發出 ulimit -n 65535 指令,將 ulimit 指令設為 65535。如果要顯示系統資源之所有限制的現行值,請使用 ulimit -a 指令。
資訊 值 預設值 1024 建議值 65535
- timeout_timewait 參數 - 決定必須歷時多久,TCP/IP 才能釋放已關閉的連線,以及可以重複使用其資源。這項關閉和釋出的間隔時間稱為 TIME_WAIT 狀態,或是區段生命期限上限的兩倍 (2MSL) 狀態。在這段期間,重新開啟用戶端及伺服器連線所耗費的成本,比建立新連線少。藉由降低此項目的值,TCP/IP 可以更快釋放已關閉的連線,以提供更多資源給新連線。如果執行中的應用程式需要快速釋出、建立新連線,或因多條連線處於 TIME_WAIT 狀態,而造成傳輸量偏低,請調整這個參數。請檢視或設定此值,作法是發出下列指令,將 timeout_timewait 參數設為 30 秒:
AIX® 作業系統調整
- TCP_TIMEWAIT - 決定必須歷時多久,TCP/IP 才能釋放已關閉的連線,以及可以重複使用其資源。這項關閉和釋出的間隔時間稱為 TIME_WAIT 狀態,或是區段生命期限上限的兩倍 (2MSL) 狀態。在這段期間,重新開啟用戶端及伺服器連線所耗費的成本,比建立新連線少。藉由降低此項目的值,TCP/IP 可以更快釋放已關閉的連線,以提供更多資源給新連線。如果執行中的應用程式需要快速釋出或建立新連線,或因多條連線處於 TIME_WAIT 狀態,而發生傳輸量偏低,請調整這個參數。請檢視或設定此值,作法是發出下列指令,將 TCP_TIMEWAIT 狀態設為 15 秒:
/usr/sbin/no -o tcp_timewait =1
- AIX 檔案描述子 (ulimit) - 指定允許的開啟檔案數目。一般而言,預設值對於大部分應用程式是足夠的。如果設定給這個參數的值太低,在開啟檔案或建立連線時,可能發生錯誤,並且可能顯示記憶體配置錯誤。如果要防止 WebSphere® Application Server 資源短缺,請移除用來執行 WebSphere Application Server 程序之使用者帳戶的資源上限 (ulimit)。
檢視或設定此值,作法是依如下所示變更 ulimit 設定:
- 開啟指令視窗。
- 輸入 smitty users,開啟 AIX 配置程式。
- 針對使用者,選取變更或顯示性質。
- 輸入用來執行 WebSphere Application Server 的使用者帳戶名稱。
- 按 Enter 鍵。
- 將下列設定變更為指出的值:
資訊 值 軟式檔案大小 -1 軟式 CPU 時間 -1 軟式堆疊大小 -1 軟式核心檔案大小 -1 硬性檔案大小 -1 硬性 CPU 時間 -1 硬性堆疊大小 -1 硬性核心檔案大小 -1 - 按 Enter 鍵,儲存變更。
- 登出再登入您的帳戶。
- 重新啟動產品。
資訊 值 預設值 2000 建議值 無限制
- TCP_TIMEWAIT - 決定必須歷時多久,TCP/IP 才能釋放已關閉的連線,以及可以重複使用其資源。這項關閉和釋出的間隔時間稱為 TIME_WAIT 狀態,或是區段生命期限上限的兩倍 (2MSL) 狀態。在這段期間,重新開啟用戶端及伺服器連線所耗費的成本,比建立新連線少。藉由降低此項目的值,TCP/IP 可以更快釋放已關閉的連線,以提供更多資源給新連線。如果執行中的應用程式需要快速釋出或建立新連線,或因多條連線處於 TIME_WAIT 狀態,而發生傳輸量偏低,請調整這個參數。請檢視或設定此值,作法是發出下列指令,將 TCP_TIMEWAIT 狀態設為 15 秒:
HP-UX 作業系統調整
HP-UX nfile 核心參數 - 指定在任何給定時間,可在系統中開啟的檔案數目上限。如果沒有指定夠大的數目,可能會限制您系統的處理能力。
HP-UX ninode 核心參數 - 指定可位於記憶體中的已開啟 inodes 數目上限。已開啟的 inode 各有一個相關聯的唯一開啟檔案。因此,您指定給 ninode 參數的值,應大於必須同時開啟的唯一檔案數目。
Solaris 作業系統調整
- Solaris 檔案描述子 (ulimit) - 指定支援的開啟檔案數目。如果指定給此參數的值太小,可能會顯示檔案開啟錯誤、記憶體配置失敗,或是連線建立錯誤。請檢視或設定此值,作法是檢查 UNIX ulimit 指令參考頁面,取得不同 Shell 的語法。
- 請發出 ulimit -a 指令,顯示系統資源之所有限制的現行值。
- 若為 KornShell Shell (ksh),請發出 ulimit -n 65535 指令,將 ulimit 指令設為 65535。
- 在程序中所能開啟的檔案數目上限,亦受廣域核心限制的 rlim_fd_max 和 rlim_fd_cur 設定影響。您可能需要在 /etc/system 檔中,增加這些設定的值。
Solaris 10 提供用來設定核心參數的新機制。在 Solaris 10 上,請發出下列其中一個指令,為檔案描述子數目上限核心參數,指定新限制:- 針對現行 Shell 階段作業,變更此值:
prctl -n process.max-file-descriptor -r -v 65535 $$
- 進行系統層面的變更:
projmod -sK 'process.max-file-descriptor=(privileged,65535,deny)' system
在發出這個指令時請多加注意,因為這個指令會變更所有使用者和所有專案的這項設定。
- 針對 root 使用者擁有的所有專案,變更此值:
projmod -sK 'process.max-file-descriptor=(privileged,65535,deny)' user.root
- 針對非 root 使用者擁有的所有專案,變更此值:
projmod -sK 'process.max-file-descriptor=(privileged,65535,deny)' user.username
- TCP_TIME_WAIT_INTERVAL - 通知 TCP/IP 讓連線控制區塊維持關閉的時間。在應用程式完成 TCP/IP 連線之後,會在指定的時間內保留控制區塊。當連線率偏高時,有待處理的 TCP/IP 連線將大量累積,並可能使伺服器效能變慢。在某些尖峰期間,伺服器可能停滯不前。如果伺服器停滯不前,netstat 指令會顯示許多開放給 HTTP 伺服器的 Socket 處於
CLOSE_WAIT 或 FIN_WAIT_2 狀態。可能發生看得見的延遲,最多達 4 分鐘,在該段時間,伺服器不會傳送任何回應,但 CPU 使用率仍留在高點,且所有活動都還在系統程序中。請檢視或設定此值,作法是使用 get 指令,來決定現行間隔,並使用 set 指令,指定間隔 30 秒。例如:
ndd -get /dev/tcp tcp_time_wait_interval ndd -set /dev/tcp tcp_time_wait_interval 30000
資訊 值 預設值 240000 毫秒,等於 4 分鐘。 建議值 60000 毫秒
- Solaris 檔案描述子 (ulimit) - 指定支援的開啟檔案數目。如果指定給此參數的值太小,可能會顯示檔案開啟錯誤、記憶體配置失敗,或是連線建立錯誤。請檢視或設定此值,作法是檢查 UNIX ulimit 指令參考頁面,取得不同 Shell 的語法。
- Proxy 伺服器調整
- 持續性要求 - 持續性要求是指經由現有 TCP 連線傳送的要求。您可以增加經由 TCP 連線從用戶端收到的要求數目,將效能最大化。此值應代表網頁中的內嵌物件(例如 GIF 等)數目上限 +1。
請在 WebSphere Application Server 管理主控台中檢視或設定此值,作法是按一下伺服器 > Proxy 伺服器 > server_name > Proxy 伺服器傳輸 > HTTP_PROXY_CHAIN/HTTPS_PROXY_CHAIN。
資訊 值 預設值 100 建議值 此值代表網頁中的內嵌物件數目上限 + 1。 - 出埠連線儲存區大小 - 指向目標伺服器的 Proxy 伺服器儲存區出埠連線,以及位於儲存區中的連線數目是可配置的。如果連線儲存區耗盡或是空的,Proxy 伺服器會建立指向目標伺服器的新連線。在並行負載偏高的情況下,應將連線儲存區大小,增加到預期的並行用戶端負載值,以達到最佳效能。
請在 WebSphere Application Server 管理主控台中檢視或設定此值,作法是按一下伺服器 > Proxy 伺服器 > server_name > Proxy 伺服器傳輸 > HTTP Proxy 伺服器設定。在「內容伺服器連線」區段中,增加「每部伺服器的連線數上限」欄位,使其值等於或大於預期的已連接用戶端數目上限。儲存您的變更,將所做的變更同步化到 Proxy 伺服器節點,並重新啟動 Proxy 伺服器。
資訊 值 建議值 與預期的並行用戶端負載一致的值。 - 出埠要求逾時 - 前端有 Proxy 伺服器的後端應用程式伺服器有時可能處於高負載,不見得能在充份時間內回應,因而 Proxy 伺服器上的連線可能因等待後端應用程式伺服器的回應而受到牽制。如果要紓解此情況,請配置 Proxy 伺服器等待目標伺服器回應的時間量。這是「出埠要求逾時」值。藉由管理 Proxy 伺服器等待慢速後端應用程式伺服器的時間量,來加快釋出連線,並用於其他的要求工作。請在管理主控台中檢視或設定此值,作法是按一下伺服器 > 伺服器類型 > WebSphere Proxy 伺服器 > proxy_server_name > HTTP Proxy 伺服器設定。在「內容伺服器連線」區段中,設定「出埠要求逾時」,使其值代表可接受的回應時間(從用戶端觀點)。
資訊 值 預設值 120 建議值 此值代表可接受的回應時間(從用戶端觀點)。
- 持續性要求 - 持續性要求是指經由現有 TCP 連線傳送的要求。您可以增加經由 TCP 連線從用戶端收到的要求數目,將效能最大化。此值應代表網頁中的內嵌物件(例如 GIF 等)數目上限 +1。


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