Apache2:如何记录被拒绝的连接和客户端超时

Apache2: how to log rejected connections and client timeout

我正在使用 Apache2 对服务 运行 进行一些负载测试,我的负载测试工具的默认超时为 30 秒。当我 运行 该工具每秒加载 1 个请求一分钟时,它报告 40 次成功,200 次 OK 响应和 20 次请求被取消,因为客户端在等待 headers 时超时。

现在,我试图在服务器端发现这一点。我看不到 apache 访问日志或 gunicorn 访问日志中记录的超时。请注意,我对未被接受以及被接受和超时的连接感兴趣。

我在 Windows 上有一些类似服务的工作经验。 http.sys 错误日志会显示连接断开错误,我们会知道我们的服务器是否正在断开连接。

当客户端超时时,服务器只知道客户端已中止连接。在 mod_log's config 中,%X 格式说明符用于记录请求完成后客户端连接的状态,这正是本例中您想知道的。

配置您的日志以使用 %X,并在日志行中查找 X 字符。

奖励:我什至在 20 年前 the discussion 在 apache 的开发论坛中发现了关于此功能的信息

更新: 关于被拒绝的连接,apache 无法记录这些连接。连接拒绝是由内核在 tcp 堆栈中完成的,而不是由 apache 完成的。我能想到的仅包括 apache 的最接近的解决方案是跟踪打开的连接数(使用 mod_status)。如果它达到最大值,您知道您可能会拒绝连接。否则,您需要设置一些监控解决方案来跟踪内核发送的 tcp 重置。