F5负载平衡器重新发送请求超时

让我先说这个,说我不是系统pipe理员,我是程序员。

最近,我们的系统pipe理员安装了F5负载平衡器。 从那以后,我注意到,每当请求超时并最终抛出一个500,负载均衡器就会向我们的另一台服务器发送相同的请求。 即使脚本实际上仍在运行,IIS也会发送超时响应。 即使脚本运行超过5分钟,POST请求也会被复制。 这对我来说似乎是一个潜在的问题,特别是涉及到客户账单的电子商务网站。

这只是我们一些较长的运行脚本的一个问题(但这是一个严重的问题)。 我被告知,这是预期的行为,我们将不得不改变我们的代码来符合。 所以我的问题是:

  • 这是预期的行为?
  • 除了用户不需要刷新之外,负载平衡器在超时之后复制请求的优点是什么?
  • 有了这个架构,如果运行一个使服务器停止运行或耗尽资源的脚本,它将最终在两台服务器上运行。 这真的是最佳吗?

看一看Big-IP中被动应用程序监控的这个入口

我的答案是令人失望的

  • 也许(取决于被动监视configuration)

  • 用户没有看到错误

  • 也许(我想为我的用户错误服务,或尝试在其他地方的请求?)

“closures服务的操作”是一个可configuration的设置。

如果发生500错误,则表示Web服务器出现问题。 然后F5将简单地将这个错误转发给连接客户端。 它不会“重新发送”自己的请求。 这种情况发生的唯一方法是客户端重新尝试请求。 在这一点上,这个请求可能会负载平衡到另一个池成员,虽然没有保证,它将基于持久性或使用的负载平衡方法(循环赛,最less连接等)。

总之,除非你在F5上有一些非常疯狂的iRule,否则这是一个由脚本本身引起的行为。

(注意:我曾经在LTM工作了一年半,是F5的Nework支持工程师)