Откат на пружине утечки соединения

Я использую Spring Boot (1.3.O.M5) с Undertow. Недавно я обнаружил, что когда я использую

lsof -p $(pidof java)

Через несколько часов команда выдаст мне около 700 строк, большинство из которых установлены TCP-соединениями с клиентами, хотя за последний час почти никто не зашел на страницу (а когда я подключаюсь к сайту, мое соединение исчезает примерно после 5 минут).

Скорее всего, это источник моего java.net.SocketException: слишком много открытых файлов - которые я получал каждые пару дней (требуя перезапуска приложения), прежде чем заметил устаревшие соединения. Я увеличил максимальный лимит открытых файлов в системе, но это, очевидно, кажется краткосрочным решением.

Буду признателен за помощь в решении этой проблемы. Спасибо!

2 ответа

Undertow не имеет тайм-аута соединения по умолчанию, вам нужно установить его, используя что-то вроде:

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

Это скажет Undertow, чтобы закрыть соединение через 60 с без запросов от клиента.

Попробуйте установить httpServerExchange.setPersistent(false);, это помогает мне, когда у меня были такие же проблемы. И да - это приводит к слишком большому количеству ошибок при открытии файлов, так как превышает лимит файловых дескрипторов

Другие вопросы по тегам