热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

想要改变TCP关闭超时-wanttochangeTCPclosingtimeout

Wehaveaclientserverapplicationinuseonoursuselinuxserver.Sometimesithappens,thatont

We have a client server application in use on our suse linux server.
Sometimes it happens, that on the client side the tcp socket somehow goes away and on the server side the other end of the socket remains existent.

我们在suse linux服务器上使用了一个客户端服务器应用程序。有时它会发生,在客户端,tcp套接字会以某种方式消失,而在服务器端,套接字的另一端仍然存在。

At the end of the day, when we stop the backend on the linux server, the backend tries to close all remaining tcp connections, also those "zombie" sockets.

在一天结束时,当我们停止linux服务器上的后端时,后端会尝试关闭所有剩余的tcp连接,也就是那些“僵尸”套接字。

(I watch this with strace).

(我用strace看这个)。

When the backend tries to close a tcp connection, where there is nothing anymore on the client side, it sends a [FIN, ACK] packet to the target. And of course, nothing comes back.

当后端尝试关闭tcp连接时,客户端不再存在任何内容,它会向目标发送[FIN,ACK]数据包。当然,什么也没有回来。

The backend repeats to send this packet. The first time it waits only a few hundredths of a second to repeat it, then, it waits longer and longer. At the end it waits seconds to repeat it. But, after 15 seconds, there is a timeout, and it goes on to end another tcp connection.

后端重复发送此数据包。它第一次只等几百分之一秒重复它,然后,它等待的时间越来越长。最后它等待几秒钟重复它。但是,15秒后,有一个超时,它继续结束另一个TCP连接。

Now, I do not know where this 15 second timeout is coming from. I would like to change it.

现在,我不知道这15秒超时的来源。我想改变它。

Thank you very much in advance.

非常感谢你提前。

1 个解决方案

#1


1  

I think you may have two problems.

我想你可能有两个问题。

  • You should detect the client disconnecting and close the server's end of the socket so you free that resources ASAP. You may set a timeout yourself for connections with no activity in the application layer. Read this.
  • 您应该检测到客户端断开连接并关闭服务器端口的套接字,以便尽快释放该资源。您可以自己为应用程序层中没有活动的连接设置超时。读这个。
  • If you cannot handle that "zombie" sockets in the app layer you may change the timeout in the SO. Read this.
  • 如果您无法在应用层中处理“僵尸”套接字,则可以更改SO中的超时。读这个。

推荐阅读
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • FastDFS Nginx 扩展模块的源代码解析与技术剖析
    FastDFS Nginx 扩展模块的源代码解析与技术剖析 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • Keepalived 提供了多种强大且灵活的后端健康检查机制,包括 HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK 和 MISC_CHECK 等多种检测方法。这些健康检查功能确保了高可用性环境中的服务稳定性和可靠性。通过合理配置这些检查方式,可以有效监测后端服务器的状态,及时发现并处理故障,从而提高系统的整体性能和可用性。 ... [详细]
  • 利用 Python Socket 实现 ICMP 协议下的网络通信
    在计算机网络课程的2.1实验中,学生需要通过Python Socket编程实现一种基于ICMP协议的网络通信功能。与操作系统自带的Ping命令类似,该实验要求学生开发一个简化的、非标准的ICMP通信程序,以加深对ICMP协议及其在网络通信中的应用的理解。通过这一实验,学生将掌握如何使用Python Socket库来构建和解析ICMP数据包,并实现基本的网络探测功能。 ... [详细]
  • 本文详细探讨了 jQuery 中 `ajaxSubmit` 方法的使用技巧及其应用场景。首先,介绍了如何正确引入必要的脚本文件,如 `jquery.form.js` 和 `jquery-1.8.0.min.js`。接着,通过具体示例展示了如何利用 `ajaxSubmit` 方法实现表单的异步提交,包括数据的发送、接收和处理。此外,还讨论了该方法在不同场景下的应用,如文件上传、表单验证和动态更新页面内容等,提供了丰富的代码示例和最佳实践建议。 ... [详细]
  • 基于Dubbo与Zipkin的微服务调用链路监控解决方案
    本文提出了一种基于Dubbo与Zipkin的微服务调用链路监控解决方案。通过抽象配置层,支持HTTP和Kafka两种数据上报方式,实现了灵活且高效的调用链路追踪。该方案不仅提升了系统的可维护性和扩展性,还为故障排查提供了强大的支持。 ... [详细]
  • 微信小程序实现类似微博的无限回复功能,内置云开发数据库支持
    本文详细介绍了如何利用微信小程序实现类似于微博的无限回复功能,并充分利用了微信云开发的数据库支持。文中不仅提供了关键代码片段,还包含了完整的页面代码,方便开发者按需使用。此外,HTML页面中包含了一些示例图片,开发者可以根据个人喜好进行替换。文章还将展示详细的数据库结构设计,帮助读者更好地理解和实现这一功能。 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
author-avatar
runyuantezhong773
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有