4

我正在使用带有 Undertow 的 Spring Boot (1.3.O.M5)。最近,我发现当我使用

lsof -p $(pidof java)

几个小时后的命令,它向我显示了大约 700 行,其中大部分是与客户端建立的 TCP 连接,尽管最近一个小时内几乎没有人进入该页面(当我连接到该站点时,我的连接在大约5分钟)。

这很可能是我的 java.net.SocketException: Too many open files 的来源——我每隔几天就会收到一次(要求我重新启动应用程序),然后才注意到过时的连接。我增加了系统中的最大打开文件限制,但这显然是一个短期的解决方案。

我将不胜感激有关此问题的帮助。谢谢!

4

2 回答 2

3

Undertow 没有默认连接超时,您需要使用以下方式设置它:

Undertow.builder().setServerOption(UndertowOptions.NO_REQUEST_TIMEOUT, 60000)

这将告诉 Undertow 在 60 秒后关闭连接,并且没有来自客户端的请求。

于 2016-02-10T01:04:17.210 回答
2

尝试设置httpServerExchange.setPersistent(false);,当我遇到同样的问题时它会帮助我。是的 - 它会导致打开文件过多错误,因为它超出了文件描述符的限制

于 2015-11-13T15:15:29.273 回答