【发布时间】:2015-12-04 19:41:53
【问题描述】:
我正在使用带有 Undertow 的 Spring Boot (1.3.O.M5)。最近,我发现当我使用的时候
lsof -p $(pidof java)
几个小时后的命令,它向我显示了大约 700 行,其中大部分是与客户端建立的 TCP 连接,尽管最近一个小时内几乎没有人进入该页面(当我连接到该站点时,我的连接是大约 5 分钟后消失)。
这很可能是我的 java.net.SocketException 的来源:打开的文件太多 - 在我注意到陈旧的连接之前,我每隔几天就会收到一次(要求我重新启动应用程序)。我增加了系统中的最大打开文件限制,但这显然是一个短期的解决方案。
非常感谢您对这个问题的帮助。谢谢!
【问题讨论】:
-
另外,带有 setSessionTimeout(3) 的 UndertowEmbeddedServletContainerFactory bean 没有将会话超时缩短到 3 秒。 server.session.timeout=3 也没有 :(
-
什么样的连接?外部的?到内部系统?找出连接以了解它正在发生的应用程序的哪一部分。会话超时也适用于 HTTP 会话,对连接没有任何作用。
-
这是我看到房产后的想法。不过,尝试永远不会有坏处。这些连接只是与访问该网站的设备的 TCP 连接。
-
保持连接打开的设备可能取决于设备/操作系统吗?已经有一段时间了,但可能有一些方法可以在服务器上设置连接超时或关闭非活动连接。
-
我不知道。连接似乎是通过移动网络建立的(我可以在地址中看到运营商的名称 - 至少在绝大多数情况下),这就是我对它们的全部了解。
标签: java spring connection undertow connection-leaks