优雅的 Apache 重启和 Keep-Alive 连接

优雅的 Apache 重启和 Keep-Alive 连接

我正在尝试找到一种快速重新启动 Apache 以应用配置更改的方法。目标是:

  1. 重新启动但不分发当前处理的请求
  2. 尽可能以原子方式执行此操作,即,新配置必须应用于从重启时开始收到的所有新请求,旧版本不应处理任何新请求。

Apache 有一个优雅重启命令,可以满足第一个目标,重启命令是即时的,现有请求不受影响。但是,重启不是原子的。如果存在处于 Keep-Alive 状态的服务器现有连接,那么它们发送的所有后续请求都将由具有旧配置的旧进程处理。

在我的例子中,Apache 服务器位于负载均衡器后面,该负载均衡器可能通过单个连接发送数百个请求。因此,在重新启动后,需要很长时间才能将新配置应用于所有新请求。

有什么方法可以解决这个问题,例如让 Apache 在完成当前请求的服务后关闭与旧进程的任何现有 Keep-Alive 连接?

答案1

转动KeepAlive Off,进行一次优雅重启,并保持一段时间,更改配置,然后再进行一次优雅重启。这类似于在更改之前减少 DNS 条目的 TTL 的做法。

答案2

那么如何设置你的 MaxKeepAliveReqests 和你的KeepAlive 超时足够低,以便客户端仍然可以使用 keepalive,但不会长时间保持这些连接?

相关内容