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

2021-12-13 10:18:54 +08:00
 axuhongbo

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

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

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

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

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

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

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

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

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

解决这个基本上需要全链路的知识,但是楼主既然提出了这个问题那么说明并不是解决这个问题的合适人选。我觉得最简单的解决方法是反馈上级,让上级去解决。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/821779

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX