在运行程序期间,如何对丢失的TCP连接进行故障转移?

时间:2017-04-11 10:56:14

标签: linux tcp

我用C ++编写分布式程序,该程序使用TCP并在Linux cento os 7上运行它,内核为3.1.0

该程序专为高性能而构建,具有高CPU,磁盘和网络使用率。

程序可能会运行几天,比如4天。我担心在计算过程中TCP连接因任何原因丢失的情况除外,其中一台机器死亡。

这可能发生吗? (当机器全部处于活动状态且没有人在套接字上调用时,tcp连接会丢失吗?)

如果可能的话,像我这样的程序员可以做些什么呢? 我可以检测丢失的连接并尝试重新连接吗?

谢谢,

1 个答案:

答案 0 :(得分:1)

理想情况下,连接管理是协议的一部分。这样就可以记录管理,客户和服务器知道预期的内容。

一些策略:

  • 使用UDP:无连接。处理请求/回复和可能的失败。可能需要超时处理回复。
  • 短TCP连接:仅在需要时连接并在"事务"之后断开连接。 (例如http)
  • 使用保持活动检查和连接重试的长TCP连接:检查连接失败并让客户端重新连接,服务器等待重新连接。