V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
axuhongbo
V2EX  ›  问与答

想请教一下各位大佬,一个会话的默认持续时间(不活动断开连接)是多少?

  •  
  •   axuhongbo · 2021-12-13 10:18:54 +08:00 · 1209 次点击
    这是一个创建于 1075 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近有这样一个问题,想请教一下各位大佬,想问一下在大家的实际业务中,一个会话的默认持续时间是多少? 首先,区分一下,这个问题指的不是三次握手和四次挥手中出现的等待时间,是想问一个会话默认不活动的话多久会断开连接呢,如果要设置的话会用到哪些字段。目前感觉这个问题可能会有不同的角度,例如从服务器端(包括不同的服务器软件)、用户端、TCP 、UDP 、HTTP ,所以比较迷惑,感觉各位大佬实际业务接触的比较多,见多识广,相信可以帮助我解决这个疑惑。

    9 条回复    2021-12-19 12:09:02 +08:00
    maja
        1
    maja  
       2021-12-13 10:21:54 +08:00
    42
    axuhongbo
        2
    axuhongbo  
    OP
       2021-12-13 10:26:13 +08:00
    请问下是 42s 吗,这个是什么字段呢
    3dwelcome
        3
    3dwelcome  
       2021-12-13 10:47:06 +08:00
    我也是 42s 左右,我是 webview 长轮询消息推送,实测安卓手机 42s 不活动,TCP 会强制断开。

    所以基本上 30s 必定会发一个心跳包,保持 TCP 活动。

    当然每个手机的表现也不一样,时长也不一样,30s 心跳包是所有手机里,最稳妥的方案。

    电脑浏览器应该就没这问题,TCP 没活动,几分钟都不会断开。
    SoloCompany
        4
    SoloCompany  
       2021-12-13 13:28:57 +08:00 via iPhone
    1. tcp 默认没有这样的行为,但万恶的防火墙有,并且粗暴的不完成完整的 tcp 断开流程约定,会造成业务无响应
    2. http 找你的服务器文档看如何配置
    3. 自己实现 tcp 服务器的话需要自己去实现断开的逻辑
    4. 建议取值略小于防火墙设置,这样的性能最优,而如果不希望保持太多的空闲连接,可以设置为一到两分钟空闲关闭
    mx8Y3o5w3M70LC4y
        5
    mx8Y3o5w3M70LC4y  
       2021-12-13 13:33:40 +08:00 via Android
    “42, 有些东西与这个数字有关~”
    julyclyde
        6
    julyclyde  
       2021-12-15 12:16:03 +08:00
    表面上你问的是会话
    实际上你问的是连接?
    axuhongbo
        7
    axuhongbo  
    OP
       2021-12-18 21:15:11 +08:00
    @julyclyde 这两个我具体也搞不清楚啥区别,就是想知道一下会话的持续时间。。但是又不是建立连接和断开连接时的那个超时时间。连接断开好像会话就结束了吧。。
    axuhongbo
        8
    axuhongbo  
    OP
       2021-12-18 21:16:20 +08:00
    @lvdb @3dwelcome @maja 请问下各位大佬 这个具体是什么字段导致的呢,可以自己配置吗?
    maja
        9
    maja  
       2021-12-19 12:09:02 +08:00
    42 是开玩笑说的,不要当真。

    这个会话你得看是指的什么,是 tcp 层面的连接,还是指的应用层的 session, 每个都不一样。

    举个例子,如果是 tcp 连接的超时,那么这个是全链路任何一跳都可以坑你一下的。

    两种解决方案,
    * 设置超短 tcp keepalive 或者协议层心跳
    * 改成面向无连接的协议,比如 udp 之类的

    如果是物联网这种,需要持续的监测端到端的最小心跳间隔。

    解决这个基本上需要全链路的知识,但是楼主既然提出了这个问题那么说明并不是解决这个问题的合适人选。我觉得最简单的解决方法是反馈上级,让上级去解决。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2714 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 02:06 · PVG 10:06 · LAX 18:06 · JFK 21:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.