弹簧泄漏连接处的下流

问题描述 投票:0回答:3

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

lsof -p $(pidof java)

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

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

如果能帮助解决这个问题,我将不胜感激。谢谢!

java spring connection undertow connection-leaks
3个回答
3
投票

Undertow 没有默认的连接超时,您需要使用以下内容进行设置:

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

这将告诉 Undertow 在 60 秒内没有客户端请求的情况下关闭连接。


2
投票

尝试设置

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


0
投票

我在 Undertow 中也遇到了同样的连接泄漏问题。

有错误:https://issues.redhat.com/browse/UNDERTOW-1758

有 PR 进行了修复,为我解决了问题:https://github.com/undertow-io/undertow/pull/1560

© www.soinside.com 2019 - 2024. All rights reserved.