对代理服务器进行故障诊断
本主题帮助您解决代理服务器可能遇到的问题。
关于此任务
代理服务器错误记录在作业日志中,如果代理服务器存在问题,请查阅以下列表。
代理服务器错误记录在 SystemOut.log、proxy.log 或 local.log 文件中。如果代理服务器存在问题,请查阅以下列表。
过程
- 成功创建了代理服务器,但无法启动它。 检查 SYSOUT
文件以了解是否存在端口冲突。使用 netstat –a 命令查看是否已在使用与代理服务器相关联的任何端点。可通过单击 > 服务器 > 代理服务器 > <server_name> > 端口在管理控制台中查找端口。尝试在 UNIX 系统上以非特权用户身份启动代理服务器时,如果该代理服务器未能启动,请查看日志中的以下消息:
将 PROXY_HTTP_ADDRESS 和 PROXY_HTTPS_ADDRESS 传输链的端口更改为大于 1024 的值。ChannelFramew E CHFW0029E: 初始化链 HTTPS_PROXY_CHAIN 时出错,原因是发出了以下异常:com.ibm.wsspi.channel.framework.exception.RetryableChannelException: 拒绝访问 TCPPort E TCPC0003E: TCP 通道 TCP_7 初始化失败。主机 * 端口 80 的套接字绑定失败。此端口可能已在使用中。
- 代理服务器通过管理端口将请求路由至 Web 容器。 代理服务器位于几个 Web 容器的前面。该配置要求 Web 容器侦听非缺省端口,例如 9061、9081 等。此方案是一个缺省用例,此时,多个应用程序服务器在同一台机器上,这将强制在配置中使用新的和不同的端口。在此方案中,代理服务器可能会通过管理端口 9061 而不是使用期望端口 9081 将应用程序请求路由至 Web 容器。
将 Web 容器的侦听端口号添加到与目标应用程序相关联的虚拟主机。此过程将确保代理服务器通过正确的端口号将请求路由至 Web 容器。
- 代理服务器已启动,但无法通过代理服务器端点访问应用程序资源。 确保代理服务器端点在虚拟主机中与应用程序相关联主机别名中。
- 代理服务器路由至另一核心组。 验证单元组中的核心组之间是否存在核心组网桥,并且是否重新启动了选择作为网桥的进程。如果核心组之间存在防火墙,那么验证是否已打开正确端口以进行核心组网桥通信。
- 代理服务器无法将请求路由至另一个单元。 查看核心组网桥设置。如果 HMGR0149E 错误消息已记录在任何服务器(通常是充当核心组网桥的服务器)上,那么该单元的安全性设置需要修改以允许通信。
有关如何在多个单元之间配置单元安全性的更多信息,请参阅标题为“导出轻量级第三方认证密钥”的主题。
- 在对代理提出请求时接收空白页。 考虑以下操作:
- 更新虚拟主机。确保对包括代理服务器侦听端口(缺省值:HTTP 80 和 HTTPS 443)的虚拟主机指定了目标应用程序和路由规则。将代理服务器侦听端口添加到应用程序或添加路由规则虚拟主机,或者使用 proxy_host 虚拟主机。
- 停止有冲突的进程。检查系统以确保没有其他正在运行的进程(如 Apache 和 IBM HTTP
Server 等等)使用代理服务器端口(缺省值:HTTP 80 和 HTTPS 443)。如果出现此问题,那么代理服务器看起来会正常启动,但它无法在受影响的侦听端口上接收请求。按如下所示检查系统:
- 停止代理服务器。
- 使用 netstat 和 ps 命令查询系统,以确定是否有违例进程在使用代理服务器侦听的端口。
- 如果发现违例进程,那么停止该进程并配置系统,以便在系统启动时不会启动该进程。
- 启用代理路由。确保对应用程序的 Web 模块启用了代理路由。在缺省情况下代理路由处于启用状态,所以如果未修改代理属性,那么可忽略此解决方案。否则,请参阅定制到应用程序的路由,以获取有关修改代理属性的指示信息。
- 测试直接请求。通过直接向应用程序服务器提出请求来确保已经安装了目标应用程序。如果未接收到响应,那么表示应用程序服务器而不是代理服务器存在问题。在可以直接从应用程序服务器接收响应之后,通过检查代理服务器来验证此情况。
- 从代理服务器接收到 HTTP 404(找不到文件)错误。 考虑以下操作:
- 更新虚拟主机。确保对包括代理服务器侦听端口(缺省值:HTTP 80 和 HTTPS 443)的虚拟主机指定了目标应用程序和路由规则。将代理服务器侦听端口添加到应用程序或添加路由规则虚拟主机,或者使用 proxy_host 虚拟主机。
- 启用代理路由。确保对应用程序的 Web 模块启用了代理路由。在缺省情况下代理路由处于启用状态,所以如果未修改代理属性,那么可忽略此解决方案。否则,请参阅定制到应用程序的路由,以获取有关修改代理属性的指示信息。
- 测试直接请求。通过直接向应用程序服务器提出请求来确保已经安装了目标应用程序。如果未接收到响应,那么表示应用程序服务器而不是代理服务器存在问题。在可以直接从应用程序服务器接收响应时,通过检查代理服务器来验证此情况。
- 无法向应用程序或路由规则提出安全套接字层 (SSL) 请求。 确保应用程序或路由规则的虚拟主机包括代理服务器 SSL 端口(缺省值:443)的主机别名。
- 无法连接至代理服务器...请求超时。 停止有冲突的进程。检查系统以确保没有其他正在运行的进程(如 Apache 和 IBM HTTP
Server 等等)使用代理服务器端口(缺省值:HTTP 80 和 HTTPS 443)。如果出现此情况,那么代理服务器看起来会正常启动,但它无法在受影响的侦听端口上接收请求。按如下所示检查系统:
- 停止代理服务器。
- 使用 netstat 和 ps 命令查询系统,以确定是否有违例进程在使用代理服务器侦听的端口。
- 如果发现违例进程,那么停止该进程并配置系统,以便在系统启动时不会启动该进程。
- 发生 HTTP 错误(如 404)时,未接收到来自错误页应用程序的响应。 确保正确输入了错误页 URI。同时确保选择了“处理远程错误”选项(如果您要处理来自后端服务器的 HTTP 错误响应)。有关更多详细信息,请参阅定制错误页面策略概述和代理服务器设置的定制错误页策略部分。
- 在跟踪代理服务器时要启用哪些包? 下列所有包并不是每个跟踪所必需的,但如果不确定的话,那么使用所有包:
- *=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 服务器插件时,如何配置代理服务器才可以不必将对应端口添加到虚拟主机? 要让代理服务器相信包括在请求中的与安全性相关的信息(如产品添加的私有头),请将请求的发起方添加到代理服务器信任的安全性代理列表。例如,将向代理服务器发送请求的 IBM HTTP Server 或 Web 服务器插件添加到代理服务器信任的安全性代理列表。然后,Web 服务器插件可以发送产品添加的专用头信息,该信息包含请求的虚拟主机信息。如果代理不信任这些来自 Web 服务器插件或任何客户机的专用头,那么代理服务器将添加自己的专用头,这需要将代理服务器 HTTP 和 HTTPS 端口添加到虚拟主机。通常,Web 服务器插件与代理服务器配合使用时,目的是将代理服务器用作后端服务器。因此,必须将插件作为可信安全代理进行添加,以避免必须显示代理服务器端口。将请求从插件路由到代理服务器提供了有关将 Web 服务器插件配置为与代理服务器配合使用的更多信息。代理服务器设置 提供了有关如何设置可信安全代理的更多信息。
- 代理服务器在高负载的情况下可能会挂起,或“打开过多文件”异常会显示在 ffdc 或 SystemErr.log 中。 在高连接负载下,文件系统描述符数目可能已耗尽,并且代理服务器可能在 ffdc 目录或 SystemError.log 文件中挂起并抛出“打开过多文件”异常,因为它无法打开套接字。
要减轻此问题,请在操作系统级别修改以下其中一个或多个参数,以及在和代理服务器级别修改这些参数以优化使用代理服务器的连接:
针对 Windows 2003 和 XP 的操作系统调整
- TcpTimedWaitDelay - 确定 TCP/IP
释放关闭的连接并复用其资源之前必须经历的时间。关闭和释放之间的此时间间隔通称 TIME_WAIT 状态或两倍最大段生命周期 (2MSL) 状态。此时间期间,重新打开到客户机和服务器的连接的成本少于建立新连接。通过减少此条目的值,TCP/IP
将更快地释放关闭的连接并为新连接提供更多资源。如果运行中的应用程序要求快速释放连接或创建新连接,或者由于多个连接处于 TIME_WAIT 状态而导致吞吐量较低,请调整此参数。按如下所示查看或设置此值:
- 使用 regedit 命令并访问 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\TCPIP\Parameters 注册表子键以创建新的 REG_DWORD 值 TcpTimedWaitDelay。
- 将此值设置为十进制 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 file descriptors
(ulimit) - Specifies the number of open files that are supported.
The default setting is typically sufficient for most applications.
If the value set for this parameter is too low, a file open error,
memory allocation failure, or connection establishment error might
display.
View or set this value by checking the UNIX reference pages on the ulimit command for the syntax of different shells. Set the ulimit command to 65535 for the KornShell shell (ksh), by issuing the ulimit -n 65535 command. Use the ulimit -a command to display the current values for all limitations on system resources.
Information Value Default value 1024 Recommended value 65535
- timeout_timewait 参数 - 确定 TCP/IP
释放关闭的连接并且可复用其资源之前必须经历的时间。关闭和释放之间的此时间间隔通称 TIME_WAIT 状态或两倍最大段生命周期 (2MSL) 状态。此时间期间,重新打开到客户机和服务器的连接的成本少于建立新连接。通过减少此条目的值,TCP/IP 可以更快地释放关闭的连接,并为新连接提供更多资源。如果正在运行的应用程序需要快速释放连接、创建新的连接,并且因为许多连接处于 TIME_WAIT 状态而导致低吞吐量,那么调整此参数。通过发出以下命令以将
timeout_timewait 参数设置为 30 秒来查看或设置此值:
Operating system tuning for AIX®
- TCP_TIMEWAIT - Determines the time that must elapse before TCP/IP
releases a closed connection and can reuse its resources. This interval
between closure and release is known as the TIME_WAIT state, or twice
the maximum segment lifetime (2MSL) state. During this time, reopening
the connection to the client and server costs less than establishing
a new connection. By reducing the value of this entry, TCP/IP can
release closed connections faster, providing more resources for new
connections. Adjust this parameter, if the running application requires
rapid release or the creation of new connections, or if a low throughput
occurs due to many connections sitting in the TIME_WAIT state. View
or set this value by issuing the following command to set the TCP_TIMEWAIT
state to 15 seconds:
/usr/sbin/no -o tcp_timewait =1
- AIX file descriptors (ulimit) - Specifies the number of
open files that are permitted. The default setting is typically sufficient for most applications. If
the value set for this parameter is too low, errors can occur when opening files or establishing
connections, and a memory allocation error might display. To prevent WebSphere® Application Server from running short on resources, remove the
limits (ulimit) for resources on the user account on which the WebSphere Application Server process runs.View or set this value by changing the ulimit settings as follows:
- Open the command window.
- Type smitty users to open the AIX configuration program.
- Select Change or Show Characteristics of a user.
- Type the name of the user account on which the WebSphere Application Server runs.
- Press Enter.
- Change the following settings to the indicated value:
Information Value Soft FILE Size -1 Soft CPU Time -1 Soft STACK Size -1 Soft CORE File Size -1 Hard FILE Size -1 Hard CPU Time -1 Hard STACK Size -1 Hard CORE File Size -1 - Press Enter to save changes.
- Log out and log into your account.
- Restart the product.
Information Value Default value 2000 Recommended value unlimited
- TCP_TIMEWAIT - Determines the time that must elapse before TCP/IP
releases a closed connection and can reuse its resources. This interval
between closure and release is known as the TIME_WAIT state, or twice
the maximum segment lifetime (2MSL) state. During this time, reopening
the connection to the client and server costs less than establishing
a new connection. By reducing the value of this entry, TCP/IP can
release closed connections faster, providing more resources for new
connections. Adjust this parameter, if the running application requires
rapid release or the creation of new connections, or if a low throughput
occurs due to many connections sitting in the TIME_WAIT state. View
or set this value by issuing the following command to set the TCP_TIMEWAIT
state to 15 seconds:
Operating system tuning for HP-UX
HP-UX nfile kernel parameter - Specifies the maximum number of files that can be open on the system at any given time. Not specifying a large enough number might restrict your system processing capacity.
HP-UX ninode kernel parameter - Specifies the maximum number of open inodes that can be in memory. An open inode is associated with each unique open file. Therefore, the value you specify for the ninode parameter should be larger than the number of unique files that must be open at the same time.
Operating system tuning for Solaris
- Solaris file descriptors (ulimit) - Specifies the number of open
files that are supported. If the value specified for this parameter
is too low, a file open error, memory allocation failure, or connection
establishment error might display. View or set this value by checking
the UNIX reference pages on
the ulimit command for the syntax of different shells.
- Issue the ulimit -a command to display the current values for all limitations on system resources.
- Issue the ulimit -n 65535 command to set the ulimit command to 65535 for the KornShell shell (ksh).
- The maximum number of files that can be open for a process is also affected by the rlim_fd_max, and rlim_fd_cur settings for the global kernel limit. You might need to increase the values of these settings in the /etc/system file.
Solaris 10 provides a new mechanism for setting kernel parameters. Issue one of the following commands to specify a new limit for the max number of file descriptor kernel parameter on Solaris 10:- To change the value for the current shell session:
prctl -n process.max-file-descriptor -r -v 65535 $$
- To make the change a system wide change:
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 Server 打开的许多套接字处于 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 file descriptors (ulimit) - Specifies the number of open
files that are supported. If the value specified for this parameter
is too low, a file open error, memory allocation failure, or connection
establishment error might display. View or set this value by checking
the UNIX reference pages on
the ulimit command for the syntax of different shells.
- 代理服务器调整
- 持久请求 - 持久请求是通过现有 TCP 连接发送的请求。可通过增加通过来自客户机的 TCP 连接接收的请求数将性能提升至最高。该值应该表示 Web 页面中嵌入对象(例如,GIF 等)的最大数目加 1。
在 WebSphere Application Server 管理控制台中,通过单击服务器 > 代理服务器 > server_name > 代理服务器传输 > HTTP_PROXY_CHAIN/HTTPS_PROXY_CHAIN 来查看或设置此值。
信息 值 缺省值 100 建议值 这是表示 Web 页面中嵌入对象的最大数目加 1 的值。 - 出站连接池大小 - 代理服务器为指向目标服务器的出站连接建立连接池,并且驻留在池中的连接数目是可配置的。如果连接池耗尽或者是空的,那么代理服务器会创建指向目标服务器的新连接。如果出现高并行负载,应将连接池大小增加至期望的并行客户机负载值以获取最优性能。
在 WebSphere Application Server 管理控制台中,通过单击服务器 > 代理服务器 > server_name > 代理服务器传输 > HTTP 代理服务器设置来查看或设置此值。在“内容服务器连接”部分中,将“每个服务器的最大连接数”字段设置为等于或大于期望的最大已连接客户机数目的值。保存更改,将更改与代理服务器节点同步,然后重新启动代理服务器。
信息 值 建议值 与期望的并行客户机负载一致的值。 - 出站请求超时 - 有时面对代理服务器的后端应用程序服务器可能具有很高的负载,并且没有足够的时间进行响应,因此,代理服务器上的连接可能会因为等待后端应用程序服务器响应而受困。可通过配置代理服务器等待来自目标服务器的响应的时间来减轻此问题。这就是出站请求超时值。通过管理代理服务器等待迟缓的后端应用程序服务器的时间,可以更快地释放连接并将其用于其他请求。在管理控制台中,通过单击服务器 > 服务器类型 > WebSphere 代理服务器 > proxy_server_name > HTTP 代理服务器设置来查看或设置此值。在“内容服务器连接”部分中,将“出站请求超时”设置为表示从客户机角度来看可以接受的响应时间值。
信息 值 缺省值 120 建议值 表示从客户机角度来看可以接受的响应时间的值。
- 持久请求 - 持久请求是通过现有 TCP 连接发送的请求。可通过增加通过来自客户机的 TCP 连接接收的请求数将性能提升至最高。该值应该表示 Web 页面中嵌入对象(例如,GIF 等)的最大数目加 1。


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