gpt4 book ai didi

java - apache mina 中的死 session

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:15:27 25 4
gpt4 key购买 nike

我们有一个基于 apache mina 的 GPRS 网关(服务器)。有时,通常当连接从客户端粗暴地终止时,即拔下电源线或任何其他异常关闭或网络出现问题时,它不会在服务器端被删除或关闭。它保持在那里,处于空闲状态,因为我不知道多长时间(可能永远)。有时我们在关闭服务器时会遇到问题,MINA 会花费太多时间,有时我们最终不得不将其终止。我们怀疑此问题与死连接问题有关。
其实,这个死连接是有道理的。由于连接被粗暴地关闭并且 mina 没有办法检查它(这就是 tcp session 的工作方式)。作为一种解决方法,我们设计了一个解决方案,如果它保持空闲(读取和写入)30 分钟(或任何可配置的时间),我们将关闭 session 。我们不喜欢它有两个原因:
1-它看起来不太好。
2-另外,我们有一个规则,即客户端与服务器建立持久连接。因此,设置“空闲超时”有点困难,因为我们不能关闭任何已空闲 x 分钟/小时的 session ,因为它可能是有效连接。

那么,在 MINA 中有没有更好更安全的方法来检测和清理这些死连接?

最佳答案

在这两种情况下,长时间不活动连接和丢失连接 - 在 channel 中没有 Activity 应该会导致在 OSI model 的每一层配置时间后超时。 .例如。你的防火墙/路由器/服务器可能会在 10 分钟内超时非 Activity 连接条目,那么你的应用程序层连接也应该在 10 分钟后这样做 - 等待更多没有意义。

为了防止静默连接超时,应该引入保活协议(protocol)。它可能是 ping(不完全是 ICMP)或其他形式的周期性无操作通信。当对等点处于 Activity 状态时,它应该响应并因此刷新所有网络层上的超时倒计时。在因超时或层信号断开连接导致尝试失败后,您可以假设您的应用层连接也断开了。

关于java - apache mina 中的死 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7510416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com