Sun Cluster 数据服务开发者指南(适用于 Solaris OS)

使用 TCP 持续连接保护服务器

在服务器端使用 TCP 持续连接保护服务器,以避免为关闭的(或网络分区的)客户机浪费系统资源。如果在持续运行了足够长时间的服务器中没有清理这些资源,当客户机崩溃或重新引导时,会最终导致浪费的资源量无限地增长。

如果客户机-服务器通信使用 TCP 流,则客户机和服务器都应启用 TCP 持续连接机制。这也适用于非 HA 单服务器情况。

其他面向连接的协议可能也需要具有持续连接机制。

在客户机端,使用 TCP 持续连接机制,将使客户机在网络地址资源进行故障转移或从一个物理主机切换到另一个物理主机时收到通知。网络地址资源的这种传送将中断 TCP 连接。但是,除非该客户机已启用了持续连接机制,否则当连接中断而当时该连接又正处于静止状态时,该客户机不一定会收到关于此情况的通知。

例如,假设客户机正在等待服务器对长时间运行请求的反应,且该客户机的请求消息已发送到服务器并已在 TCP 层得到了确认。在此情况下,客户机的 TCP 模块无需不断重新传送请求。另外,客户机应用程序将处于阻塞状态,等待对该请求的响应。

在可能的情况下,客户机应用程序除了使用 TCP 持续连接机制以外,还必须在其级别上执行自己的定期持续连接。TCP 持续连接机制在处理所有可能的边界问题上并不都是完美的。通常情况下,使用应用程序级的持续连接机制要求客户机-服务器协议支持空操作,或至少支持有效的只读操作(例如状态操作)。