调整数据库连接是否断开的检测

如果消息传递引擎配置为使用数据存储器并且不能连接至其数据存储器(例如,因为包含数据存储器的数据库未在运行),那么消息传递引擎不会启动。可调整系统以提高消息传递引擎成功启动的机率。

关于此任务

在单服务器环境中,启动应用程序服务器时,消息传递引擎会尝试启动。如果数据库处于不可用状态超过 15 分钟,那么消息传递引擎可能会进入停止状态,并且需要手动启动。

在高可用性环境中,消息传递引擎可在服务器或集群启动时启动,也可在故障转移过程中启动。在消息传递引擎启动期间,消息传递引擎会尝试连接至数据存储器,缺省情况下尝试最多 15 分钟。如果在此期间仍然满足下列其中一个条件,那么消息传递引擎不能在服务器上启动,并且会对该服务器禁用高可用性:
  • 数据库不可用或未在运行。
  • 在故障转移情况下,数据库不会检测与原始应用程序服务器的网络连接是否断开,并且因此不会释放对数据存储器的锁定。
此禁用状态可传播至集群的所有成员。必须以手动方式对服务器重新启用高可用性以维护高可用性环境。

可通过在数据库服务器或应用程序服务器上配置各种参数(如 15 分钟缺省超时)来提高消息传递引擎成功启动的机率。

过程

  1. 在数据库服务器上,配置操作系统以将检测与应用程序服务器的网络连接是否断开时所花的时间缩至最短。 请参阅操作系统的文档以了解详细信息。例如,下表列示 Windows 和 AIX® 操作系统的相关参数:
    表 1. TCP/IP 参数. 此表的第一列提供 Windows 操作系统的 TCP/IP 参数列表。此表的第二列提供 AIX 操作系统的 TCP/IP 参数列表。第三列提供这些参数的描述。
    Windows 操作系统上的参数名称 AIX 操作系统上的参数名称 描述
    KeepAliveTime tcp_keepidle 发送 keepalive 请求前等待不活动的连接的时间(在 Windows 操作系统上以毫秒为单位,在 AIX 操作系统上以 0.5 秒为单位)
    KeepAliveInterval tcp_keepintvl 等待响应的时间(在 Windows 操作系统上以毫秒为单位,在 AIX 操作系统上以 0.5 秒为单位)
    TCPMaxDataRetransmissions tcp_keepcnt 结束连接前发送的请求数。
    通过使用以下公式,可计算数据库服务器检测与应用程序服务器的连接是否失败时所花的总时间:

    检测连接是否失败时所花的时间 = 保持活动时间 + (保持活动时间间隔 x 请求数)

    例如,对于参数根据下表设置的 Windows 系统,数据库服务器检测与应用程序服务器的连接是否失败时所花的总时间为 350 秒。
    表 2. 示例参数值. 第一列提供参数名称。第二列提供这些参数的样本值。
    参数
    KeepAlive 300000 毫秒
    KeepAliveInterval 10000 毫秒
    TCPMaxDataRetransmissions 5
    数据库产品可能还具有可配置的相关参数,如 DB2® for z/OS® 中的 IDLE THREAD TIMEOUT 参数。

    数据库服务器检测到与应用程序服务器的连接断开时,数据库会释放对数据存储器的锁定。消息传递引擎现在可访问该数据存储器并因此可成功启动。

  2. 在应用程序服务器上,调整消息传递引擎以在适当时间内等待数据存储器变为可用。 缺省情况下,消息传递引擎会每 2 秒尝试一次连接至数据存储器,持续尝试 15 分钟。如果要调整这些计时,请完成此步骤的余下部分。
    1. 单击服务集成 -> 总线 -> bus_name -> [拓扑] 消息传递引擎 -> engine_name -> [其他属性] 定制属性以浏览至消息传递引擎的定制属性面板。
    2. 单击新建
    3. 在“名称”字段中输入 sib.msgstore.jdbcInitialDatasourceWaitTimeout 并在“值”字段中输入适当的值。 此属性是等待数据存储器变为可用的时间(以毫秒计)。缺省值为 900000(15 分钟)。此时间包括建立与数据库的连接以及获取必需的表锁定所需的时间。

      确保此属性值大于步骤 1 中配置的数据库服务器检测网络连接是否断开时所花的总时间。

    4. 单击确定
    5. 单击新建
    6. 在“名称”字段中输入 sib.msgstore.jdbcStaleConnectionRetryDelay 并在“值”字段中输入适当的值。 此属性是两次尝试连接至数据存储器之间等待的时间(以毫秒计)。缺省值为 2000(2 秒)。 例如,如果将 sib.msgstore.jdbcInitialDatasourceWaitTimeout 属性设置为 600000,并将 sib.msgstore.jdbcStaleConnectionRetryDelay 属性设置为 3000,那么消息传递引擎将每 3 秒尝试一次连接并持续尝试 10 分钟。
    7. 单击确定
    8. 将更改保存至主配置。
    9. 重新启动应用程序服务器。
    10. 如果有集群,请重复先前步骤以便为集群中的每个消息传递引擎添加这些属性。

结果

通过配置这些参数和定制属性,可将数据库服务器检测网络连接是否断开时所花的时间缩至最短,并确保消息传递引擎在合理时间内等待数据库连接恢复,然后尝试重新启动。

下一步做什么

您可能想要配置消息传递引擎和服务器以在数据库连接失败时重新启动。此行为可降低数据库连接恢复时消息传递引擎处于不一致状态的风险。

指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjm_tunedbconn
文件名:tjm_tunedbconn.html