Apache 反向代理奇怪的超时

标签 apache ibm-midrange reverse-proxy

问题
我在 DMZ 设置中有一个 apache 服务器作为我们实时机器的反向代理。大多数时候,这就像一种魅力。问题是用户说他们偶尔会遇到“超时”。

果然,如果我检查代理上的错误日志,我可以看到其中一些错误。

[error] [client x.x.x.x] (70007)The timeout specified has expired: ZSRV_MSG158A: Beim Lesen eines Dokuments auf dem fernen Host x.x.x.x ist ein Fehler aufgetreten. 

或者英文,当读取远程主机 x.x.x.x 上的文档时发生错误。

现场机器上的错误日志完全是空的。

我尝试过的事情
我的第一个想法是,也许实时机器正在返回,但代理超时较低,因此它可能已经放弃等待。我发现实时机器的超时时间为 300 秒(默认),因此我尝试将代理超时更改为 310 秒。

这并没有产生什么影响。这让我相信代理和服务器之间可能存在间歇性连接问题?就好像实时机器从未收到请求一样。

我已经在实时计算机和代理上关闭了 keepalive。我也将其更改为使用 http 1,因为显然这会带来更少的问题?

SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1

http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#envsettings

有什么想法吗?

最佳答案

我们找到了超时的根源。第三方 API 中存在记录锁,导致一些请求挂起。一旦解决了这个问题,我们就不再在代理上遇到超时问题。

令我困惑的是,我们在代理上出现超时错误,但在主事件计算机(代理目标)上却没有。这让我认为请求不可能在实时情况下超时,但不知何故仅在代理上超时。显然这是错误的,因为超时的来源是在实时机器上,我们只是没有看到那里的 apache 错误。

我仍然不知道为什么我们只在代理日志中看到超时错误,因此如果有人有解释,我会接受它作为答案。

关于Apache 反向代理奇怪的超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22867563/

相关文章:

php - htaccess 仅在未提供参数的情况下将一个域重定向到另一个域?

php - 使用 htaccess 将另一个域图像加载到我的域?

c# - 一条SQL汇总不同的 'group by'级别

java - 如何从 Java 类调用 AS/400 函数

macos - 如何在 apache 中为 mac os x 上的 play framework web app 设置反向代理

php - 我可以告诉 mod_deflate 和 PHP 只跳过对一个目录的压缩吗?

javascript - 是(或者可以)用 Nodejs http 服务器替代 Apache 或 IIS 等大型服务器

java - 在PreparedStatement和ResultSet中操作setter和getter

NGINX 反向代理到没有根子目录的主机

python - 使用子路径在 Apache 反向代理后面重定向 Flask 登录