调整传输通道服务
传输通道服务管理 HTTP 和 JMS 请求的客户机连接和 I/O 处理。这些 I/O 服务基于 Java™ 提供的非分块 I/O(NIO)功能。这些服务为 WebSphere® Application Server 请求处理提供了高度可伸缩的基础。基于 Java NIO 的体系结构在性能、可伸缩性和用户易用性方面都有限制。因此,实现了真实异步 I/O 集成。此实现显著提高了可用性、降低了 I/O 处理的复杂程度并减少了您必须执行的性能调整工作量。
关于此任务
- 可伸缩性,它使该产品能够处理许多并发请求
- 异步请求处理,它在客户机请求与 Web 容器线程之间提供了多对一映射。
- 资源共享与隔离,它允许在 Web 容器与消息传递服务之间共享线程池
- 提高了可用性
- 合并了自动调整与配置功能
通过更改一个或多个与传输链相关联的传输通道的缺省设置值,可以提高该通道的性能。

过程
- 调整 TCP 传输通道设置。 在管理控制台中,单击服务器 > 服务器类型 > WebSphere 应用程序服务器 > server_name >
端口。然后,单击查看相关联的传输以了解相应的端口。
- 选择要更改属性的传输链。
- 单击为该传输链定义的 TCP 传输通道。
- 减小为“最大打开连接数”属性指定的值。 此参数控制可供服务器使用的最大连接数。如果让此参数保留为缺省值 20000(它是最大连接数),那么可能会导致停止的 Web 站点处于失败状态,因为产品会继续接受连接,因而会增加连接及相关联的工作的积压。应将缺省值更改为一个小很多的值(例如 500),然后应执行其他调整和测试,以确定应为特定 Web 站点或应用程序部署指定的最佳值。
- 如果关闭客户机连接前未能及时地将数据写回到客户机,那么,请更改“不活动超时”参数值。 此参数控制可供服务器使用的最大连接数。接收到新连接后,TCP 传输通道先等待足够的数据到达,然后再将该连接分派给 TCP 传输通道上特定于协议的通道。如果在对“不活动超时”参数指定的时间段内未接收到足够的数据,TCP 传输通道就会关闭该连接。
此参数的缺省值为 60 秒。此值适合于大多数应用程序。如果工作负载涉及许多连接,并且所有这些连并非都能够在 60 秒内接受服务,那么应该增大对此参数指定的值。
对特定 HTTP 端口指定线程池。 每个 TCP 传输通道都被指定到特定的线程池。可以在一个或多个 TCP 传输通道之间以及在 TCP 传输通道与其他组件之间共享线程池。TCP 传输通道的缺省设置是将所有基于 HTTP 的流量指定到 WebContainer 线程池,并将所有其他流量指定到 Default 线程池。使用线程池菜单列表来对每个 TCP 传输通道指定特定的线程池。此参数的缺省设置是将所有基于 HTTP 的流量指定到 WebContainer 线程池,并将所有其他流量指定到 Default 线程池。有关线程池集合的信息描述了如何创建其他线程池。
调整线程池的大小。 缺省情况下,线程池最少包含 10 个线程,最多可以包含 50 个线程。要调整这些值,请单击线程池 >threadpool_name 并调整对该线程池的“最小大小”和“最大大小”参数指定的值。
典型应用程序在每个处理器上需要使用的线程通常不会超过 10 个。有一种例外情况,即,服务器处于空闲状态,例如后端请求非常慢,从而导致服务器线程等待后端请求完成。在这种情况下,处理器利用率很低,并且增加工作负载并不能提高处理器吞吐量。线程内存转储表明几乎所有线程都已用于后端资源。如果存在这种情况,并且您已正确地对后端进行了调整,请尝试增大池中的最小线程数,直到您看到吞吐量有所提高并且线程内存转储显示了除后端调用以外的其他运行时区域中的线程为止。
除非后端系统有可能长时间挂起,否则请更改“根据需要增大”参数的设置。如果后端系统长时间挂起,所有运行时线程就会被阻塞(等待该后端系统),而不会处理其他不涉及已挂起的后端系统的工作。
- 调整 HTTP 传输通道设置。 在管理控制台中,单击服务器 > 服务器类型 > WebSphere 应用程序服务器 > server_name >
端口。然后,单击查看相关联的传输以了解相应的端口。
- 选择要更改属性的传输链。
- 单击为该传输链定义的 HTTP 传输通道。
- 调整 HTTP 保持活动设置。
“持久使用”(保持活动)连接设置控制连接在各个请求之间是否保持处于打开状态。如果工作负载涉及发送多个请求的客户机,那么,使连接保持处于打开状态可以降低创建和破坏套接字的成本。缺省值为 true,通常这是最佳设置。
如果客户机在相当长的一段时间内仅发送单个的请求,那么最好将此选项禁用并立即关闭连接,而不是通过让 HTTP 传输通道设置超时来在将来某个时间关闭连接。
- 更改“最大持久请求数”参数值,以增加关闭一个连接前可以流经该连接的请求数。
当使用持久连接选项处于启用状态时,“最大持久请求数”参数控制关闭一个连接前可以通过该连接传递的请求数。缺省值为 100。应该将此值设置为某一值,使得大部分(如果不是全部的话)客户机在同一会话期间进行多个请求时始终有打开的连接。通过正确地设置此参数,有助于避免不必要地设置和破坏套接字。
对于客户机从不关闭的测试方案,值 -1 将禁用此处理,这将限制通过单一连接传递的请求数。持久超时会关闭某些空闲套接字,从而防止服务器耗尽已打开的套接字。
- 更改“持久超时”参数值,以延长连接由于不活动而被关闭前保持打开的时间。 “持久超时”参数控制连接由于不活动而被关闭前保持打开的时间长度。缺省值为 30 秒。将此参数设置为保持足够多的连接处于打开状态的值,以使大部分客户机在必须进行请求时能够获取可用的连接。
- 如果客户机由于发送数据的时间超过 60 秒而无法完成请求,请更改对“读取超时”参数指定的值。 某些客户机在请求期间发送数据时的暂停时间超过 60 秒。要确保这些客户机能够完成请求,请将对此参数指定的值更改为足以使客户机完成数据传输的时间长度(以秒计)。在更改此值时,请确保发送不完整数据且因而长时间使用资源(套接字)的客户机不会对服务器造成不良影响。
- 如果某些客户机需要 60 秒以上的时间来接收写至他们的数据,请更改对“写超时”参数指定的值。 某些客户机速度较慢,他们需要 60 秒以上的时间来接收发送给他们的数据。要确保这些客户机能够获取所有数据,请将对此参数指定的值更改为足以允许他们接收所有数据的时间长度(以秒计)。在更改此值时,请务必保护服务器不受恶意客户机影响。
- 调整 Web 容器传输通道设置。 在管理控制台中,单击服务器 > 服务器类型 > WebSphere 应用程序服务器 > server_name >
端口。然后,单击查看相关联的传输以了解相应的端口。
- 选择必须更改其属性的传输链。
- 单击为该传输链定义的 Web 容器传输通道。
- 如果需要执行多次写操作才能处理对客户机的响应,那么,请将“写缓冲区大小”参数值更改为更适合于客户机的值。 “写缓冲区大小”参数控制 Web 容器在发送请求以进行处理之前为每个线程缓存的最大数据量。缺省值为
32768 个字节,此值适合于大多数应用程序。如果响应大小大于写缓冲区大小,就会对该响应进行分块并通过多次 TCP 写操作来写该响应。
如果必须更改对此参数指定的值,请确保新值使大部分请求能够在单次写操作中写出。要确定此参数的合适值,请查看返回的页大小,并添加一些附加字节以便为 HTTP 头留出空间。
- 调整受限缓冲区的设置。
尽管缺省的受限缓冲区参数对于大多数环境来说是最佳的,但在某些情况下以及在某些操作系统中,您可能需要更改这些缺省值以提高性能。更改受限缓冲区参数会使性能下降。因此,在决定更改受限缓冲区参数前,务必调整其他相关内容,例如 Web 容器和 ORB 线程池。
要更改受限缓冲区的参数:
- 在管理控制台中,请单击服务器 > 服务器类型 > WebSphere 应用程序服务器 > server_name。
- 在“服务器基础结构”部分中,单击 Java 和进程管理 > 进程定义 > Java 虚拟机。
- 单击定制属性。
- 在“名称”字段中输入下列其中一个定制属性并在值字段中输入适当的值,然后单击应用以保存该定制属性及其设置。
- com.ibm.ws.util.BoundedBuffer.spins_take=value
指定 Web 容器线程在被暂挂并入队前可以尝试从缓冲区中检索请求的次数。此参数使您能够在可能无法成功的检索尝试的执行成本与暂挂线程并再次激活它(以响应 PUT 操作)的成本之间进行权衡。
信息 值 缺省值: 操作系统的可用处理器数减 1。 建议值: 使用任何非负整数值。实际上,使用 2 至 8 之间的整数将获得最佳性能结果。 用法: com.ibm.ws.util.BoundedBuffer.spins_take=6。在线程被暂挂前,执行 6 次尝试。 - com.ibm.ws.util.BoundedBuffer.yield_take=true 或 false
指定线程在执行特定次数从缓冲区获取请求的尝试后将处理器让给其他线程。通常,最好指定较小的尝试次数。
信息 值 缺省值: false 建议值: 转让效果的实现随各个平台的不同而有所变化。 用法: com.ibm.ws.util.BoundedBuffer.spins_take=boolean value - com.ibm.ws.util.BoundedBuffer.spins_put=value
指定 InboundReader 线程在被暂挂并入队前尝试将请求放入缓冲区的次数。使用此值以您在重复尝试(可能无法成功)将请求放入缓冲区的成本与暂挂线程并再次激活它(以响应 TAKE 操作)的成本之间进行权衡。
信息 值 缺省值: com.ibm.ws.util.BoundedBuffer.spins_take 的值除以 4。 建议值: 使用任何非负整数值。实际上,2 至 8 之间的整数已证明能够获得最佳性能结果。 用法: com.ibm.ws.util.BoundedBuffer.spins_put=6。在线程被暂挂前,执行 6 次尝试。 - com.ibm.ws.util.BoundedBuffer.yield_put=true 或 false
指定线程在执行特定次数将请求放入缓冲区的尝试后将处理器让给其他线程。通常,最好指定较小的尝试次数。
信息 值 缺省值: false 建议值: 转让效果的实现随各个平台的不同而有所变化。 用法: com.ibm.ws.util.BoundedBuffer.yield_put=boolean value - com.ibm.ws.util.BoundedBuffer.wait=number of milliseconds
指定当缓冲区完全已满或者为空时不必要地使请求延迟的最大时间长度(以毫秒计)。
信息 值 缺省值: 10000 毫秒 建议值: 通常,10000 毫秒的值能够产生不错的结果。在缓冲区完全已满或者为空这种罕见的情况下,较小的值能够保证更及时地处理请求,但使用较小的值通常会对性能产生影响。 用法: com.ibm.ws.util.BoundedBuffer.wait=8000。可能不必要地将请求延迟长达 8000 毫秒。
- com.ibm.ws.util.BoundedBuffer.spins_take=value
- 单击应用,然后单击保存以保存这些更改。


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