提问人:Troy Hamilton 提问时间:7/25/2023 更新时间:7/25/2023 访问量:89
如何在 Linux 上以预定的时间单位自动终止空闲的 tcp 连接?
How to automatically kill idle tcp connections after a pre-determined unit of time on Linux?
问:
我正在尝试用 C 编写一个服务器,它使用一个名为 epoll() 的函数来处理连接,我想在空闲套接字上实现超时,这样我就可以防止一堆空闲套接字占用资源,但我不想使用 timerfd() 编写一堆复杂的超时代码。我知道在 Linux 上可以配置网络流量设置,我想知道是否有办法让操作系统可以在 15 秒不活动后终止空闲的 tcp 连接。我知道它会对其他使用 TCP 的程序产生影响,但我只打算让这个程序在我的 linux 机器上运行。
有没有办法让内核(或任何控制 TCP 流量的东西)在空闲一段时间后终止 tcp 连接?
答:
0赞
Steffen Ullrich
7/25/2023
#1
拥有这样的功能需要资源来实现和维护。我不认为在现实世界中需要对系统上的每个 TCP 套接字进行全局空闲超时。因此,我认为这没有实现。应用程序可以轻松实现自己的超时处理,并且在这里也更加灵活,例如每个应用程序的不同超时,套接字上应用程序协议的每个状态(如标头与正文),具体取决于负载、打开的套接字数量......
评论
ssh