gpt4 book ai didi

java - 一些ajax post请求的tomcat 2分钟超时

转载 作者:行者123 更新时间:2023-11-29 09:11:01 25 4
gpt4 key购买 nike

我在处理某些 AJAX POST 请求时遇到间歇性超时。设置:Apache 2.2.17 -> mod_jk 1.2.26 -> JBoss 4.3 CP01(使用 Tomcat 6.0)。应用程序是使用 JSF 1.2_11、Seam 2.1、RichFaces 3.3.1 构建的。

它通常发生在 IE 浏览器 (7,8,9) 上。浏览器发送 ajax 请求(RichFaces 为此生成 JavaScript 代码)。此 HTTP POST 请求通过 mod_jk 转换为 AJP header 和正文数据包并发送到 Tomcat。头包说内容长度为1760,但是包体的长度字段为0,没有内容。数据包是用 tcpdump 捕获的。并不是每个有问题的请求都会出现 0 ajp 正文数据包。所有 ajax 请求/响应都很小,最多 30K,没有文件上传,也没有冗长的数据库查询。

在此阶段,mod_jk 日志显示请求已在 2 分钟内处理完毕。在我们的测试环境中,我们也得到了 2、3、4 和 6 分钟。包装请求的应用程序过滤器也显示 2 分钟时间;过滤器很简单 - 获取请求前后的时间戳并记录差异。

应用程序的 JSF 阶段监听器被调用,每个阶段(请求、 View 恢复、验证、调用、呈现)大约为 100 毫秒 - 通常用于应用程序。因此,超时必须发生在请求开始时(过滤器之后和第一个 JSF 阶段之前)或结束时(渲染 JSF 阶段之后和过滤器结束之前)。

有时,mod_jk 说客户端读取超时;谁是客户端 - 浏览器,apache? JBoss 中没有在 DEBUG 级别记录异常。

有人遇到过类似的事情吗? mod_jk reply_timeout 设置不能解决问题。直接连接到 JBoss 给了我们大约 30 秒的超时,这是我们以前从未见过的,我们不知道它是否与 2 分钟超时有关。

最佳答案

我们在 IE 中遇到了这个问题: http://support.microsoft.com/kb/821814 .我们的 KeepAliveTimeout 设置为 3 秒,服务器的响应有时会到达该边界,导致 Apache 在响应 header 已发送后断开连接。

我们的解决方案是双重基础架构:外部客户端不会获得 KeepAlive,因为它们不需要 SSO 登录。 Intranet 客户端现在转到不同的 Apache 服务器(因为 KeepAlive 是服务器范围的,而不是特定于 vhost 的)。

关于java - 一些ajax post请求的tomcat 2分钟超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12479420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com