java - 检查 HttpServletRequest 的连接是否仍然打开?

标签 java servlets connection jetty httprequest

使用在本地主机上运行的客户端和服务器的合成负载,我通过 tcpdump 和 netstat 验证客户端正在向服务器发送 FIN 数据包,但连接卡在 CLOSE_WAIT 中,而请求仍排队服务器(我使用带有排队线程池的 Jetty)。当池中存在可用工作线程时,即使客户端已关闭连接,servlet 仍会照常处理请求。

我想要的是一种测试连接是否已经关闭的方法,以防止服务器处理客户端已经超时的请求(我知道我可以在客户端上设置一个带有时间戳的http header 和只要时钟同步,就在服务器上检查这一点,但我更愿意检查连接以查看它是否仍然打开)。

我想做的事情可能吗?如果可能的话,如何做?

最佳答案

我不这么认为。 FIN 并不意味着连接已断开。 A 向 B 发送一些数据,然后发送 FIN 是完全有效的;然后A继续从B读取。这种半关闭状态没有任何问题。

更好的选择是提高服务器吞吐量,这样客户端就不必等待太久。

关于java - 检查 HttpServletRequest 的连接是否仍然打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15261398/

相关文章:

apache - 是否可以在没有任何响应的情况下关闭http连接?

java - 抽象类的对象是匿名内部类吗?

java - 将 'java.lang.ClassNotFoundException: com.mysql.jdbc.Driver' 添加到构建路径并使用 Class.forName() 注册后如何修复它;

MySQL 服务器重载

java - 将 HttpServletResponse 和 HttpServletRequest 存储为 HttpServlet 的两个字段

html - 从生成的 HTML 到资源的路径

json - 使用 NSURLSession 下载 JSON 不会返回任何数据

java - 如何 javax.mail.AuthenticationFailedException : failed to connect in sending mail by java?

java - 解析依赖项时出现 Maven 错误

java - 使网站的欢迎页面成为一个servlet