среда, такая как:
os: CentOS Linux выпуск 7.6.1810 (Core)
веб-сервер: undertow v2.0.20.Final
springBootВерсия: 2.1.5.RELEASE
я обнаружил слишком большое состояние соединения CLOSE_WAIT в моем httpServer, и после tcpdump
я обнаружил, что это потому, что мой клиент (сетевой прокси-сервер) отправляет пакет FIN, а после него клиент всегда возвращает размер окна 0, поэтому мой httpserver ждет для отправки данных send-Q, но он не может этого сделать.
результаты tcpdump выглядят так:
и мой основной код:
public void hello(HttpServletResponse response) throws IOException {
String path="C:\\Users\\Administrator\\Desktop\\over.mp4";
FileInputStream fileInputStream=new FileInputStream(path);
OutputStream outputStream=response.getOutputStream();
response.setContentType("video/mp4");
int byteCount = 0;
byte[] buffer = new byte[4096];
int bytesRead = -1;
while ((bytesRead = fileInputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
byteCount += bytesRead;
}
outputStream.flush();
}
поэтому мой вопрос в том, какая конфигурация или метод могут позволить underTow отправлять RST-пакет для завершения соединения, когда у клиента возникает какая-либо ошибка, подобная этой проблеме.