【问题标题】:Spring boot - bad TCP connection handlingSpring Boot - 错误的 TCP 连接处理
【发布时间】:2023-03-26 15:13:02
【问题描述】:

我们使用的是用 Spring Boot 和 Java 编写的 REST Web 应用程序。 经过一段时间的系统使用并检查服务器的开放端口后,我们似乎在处理连接方面存在漏洞

Netstat -nao | grep 4567

即使没有打开浏览器并且没有主动连接到服务器,这也会返回附加的输出 我很乐意在这方面提供任何帮助,因为 Spring 似乎对连接处理不当,或者可能是我们这边的配置错误。

  • TCP 172.17.1.80:4567 172.18.11.36:54208 TIME_WAIT 0
  • (不同内部端口的更多此类条目)
  • TCP 172.17.1.80:4567 172.18.11.36:54209 CLOSE_WAIT 4756
  • (不同内部端口的更多此类条目)
  • TCP 172.17.1.80:4567 172.18.11.36:54542 CLOSE_WAIT 4756

【问题讨论】:

  • TIME_WAIT 条目没有问题,但 CLOSE_WAIT 条目是错误。

标签: java http spring-boot tcp


【解决方案1】:

问题是 HttpResponse 尚未关闭,为了解决这个问题,我使用了 HttpClientUtils.closeQuietly,见下文:

HttpResponse response = null;
    try {
        response = client.execute(createHttpRequest(url, timeOut));
        StringBuilder result = new StringBuilder();
        try (BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()))) {
            String line;
            while ((line = rd.readLine()) != null) {
                result.append(line);
            }
        }
        return result;
    } catch (org.apache.http.conn.HttpHostConnectException e) {
        throw new HostUnreachableException(e);
    } finally {
        HttpClientUtils.closeQuietly(response);
    }

【讨论】:

    猜你喜欢
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 2022-06-17
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多