【发布时间】:2012-06-06 15:40:00
【问题描述】:
观察:
我的 Web 应用程序正在 JBoss 中运行。
由于图片等原因,每次用户点击都会产生 >5 个 HTTP 请求。
-
在服务器上运行 netstat 表明正在为每个 HTTP 请求打开一个新的 TCP 连接(基本上我正在查看来自端口 80 上客户端 IP 的 TCP 连接总数)。
事实:
JBoss HTTP 协议设置为 1.1。
我检查过 FF、IE9 和 Chrome - 所有浏览器都这样做。
我有两个测试环境 - 一个在 Windows7 上运行,另一个在 CentOS 上运行。我在两者中都看到了相同的行为。
我想要完成的事情
- 持久的 TCP 连接,因为希望这将 a) 增强用户体验 b) 减少服务器上的负载
此时,我不确定我应该将哪些代码、配置详细信息或日志附加到问题中,但如果您让我知道,我会提供。任何形式的帮助表示赞赏。
附言从标题TCP connection is not reused for HTTP requests with HttpURLConnection 来看,这个线程似乎很有希望,但它主要处理客户端。
【问题讨论】:
-
你能看看流量吗?你能检查客户端和服务器发送的连接HTTP头吗?
-
嗨菲利普,感谢您的回复。我应该查看哪些标题项?我可能会使用 HttpServletRequest 和 HttpServletResponse getHeader(String header) 方法。如果有更快的方法可以做到这一点,我将有兴趣了解这一点。感谢您的帮助!
-
@PhilippeMarschall 请求标头:检查以下项目 1) Cookie -> JSESSIONID=blah-blah, 2) Connection -> keep-alive, 3) Cache-Control -> null, 4) pragma - > 空
-
我通常使用的是tcpdumpd和Wireshark的组合,然后跟随tcpstream。这使我可以查看通过 tcp 连接发出的请求。然后我查看客户端和服务器发送的 Close 标头 w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.10。我寻找“连接:关闭”标题。是客户端还是服务器发送一个?
-
firebug、fiddler 或 httpwatch 等浏览器端工具也会为您提供这些数据。
标签: http tcp jboss persistent