首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tomcat离开time_wait连接

tomcat离开time_wait连接
EN

Stack Overflow用户
提问于 2014-08-01 01:42:42
回答 3查看 6.2K关注 0票数 3

我们使用Apache Sever作为前端服务器,Tomcat服务器作为后端服务器。前端客户端是java swing应用程序。协议是含糊的。

有时我们会收到很多小请求。在执行"nestat -a“时,有很多TIME_WAIT连接,它们会阻塞服务器打开新的连接。只有与tomcat的联系才能保留下来。与阿帕奇的连接似乎已经关闭。

我们使用重写规则将请求转发到tomcat

代码语言:javascript
复制
RewriteEngine On
RewriteCond %{REQUEST_URI} .*\.servlet.*$
RewriteRule ^/(.*)$ http://localhost:8080/$1 [P]

有什么想法吗?

更新:

谢谢for your advice

但它仍然不起作用。每个流都是关闭的,并且仍然存在这些TIME_WAIT:

代码语言:javascript
复制
if (conn != null) {
    try {
        IOUtils.closeQuietly(conn.getInputStream());
    } catch (IOException e) {
        // do nothing
    }
    try {
        IOUtils.closeQuietly(conn.getOutputStream());
    } catch (Exception ex) {
        // do nothing
    }
    try {
        IOUtils.closeQuietly(((HttpURLConnection) conn).getErrorStream());
    } catch (Exception ex) {
        // do nothing
    }
}

if (conn instanceof HttpURLConnection) {
    ((HttpURLConnection) conn).disconnect();
}
EN

回答 3

Stack Overflow用户

发布于 2014-08-01 02:02:25

发出请求时,您很可能没有关闭Swing应用程序中的输入/输出流。来自here

如果结果是InputStream,则将InputStream.close()放在finally块中非常重要,因为在读取所有数据并关闭输入流之前,Hessian不会关闭底层HTTP流。

票数 0
EN

Stack Overflow用户

发布于 2014-08-01 23:28:44

TIME_WAIT是最近关闭的连接的正常状态,它将在内核定义的超时期间保留在其中。您已经从应用程序这一端做了您能做的一切。

如果您的连接闪烁得太快,并且遇到可用端口不足的情况,您可以调整系统对它们的回收。Huge amount of TIME_WAIT connections概述了Linux的基本原理,Tuning Windows for TCP/IP performance列出了相应的Windows参数,并作了简要说明。

票数 0
EN

Stack Overflow用户

发布于 2014-08-01 23:31:44

不是Tomcat,是你的操作系统。

操作系统将在TIME_WAIT中离开连接,以避免由于端口重用过快而导致的干扰。想象一下,来自旧连接的数据包延迟到达,而同一端口中的新连接处于打开状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25065572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档