apache2 - Apache2:如何记录被拒绝的连接和客户端超时
问题描述
我正在对使用 Apache2 运行的服务进行一些负载测试,我的负载测试工具的默认超时为 30 秒。当我以每秒 1 个请求的负载运行该工具一分钟时,它报告 40 个成功并获得 200 个 OK 响应,并且 20 个请求被取消,因为在等待标头时超出了客户端超时。
现在,我试图在服务器端发现这一点。我看不到 apache 访问日志或 gunicorn 访问日志中记录的超时。请注意,我对未接受的连接以及已接受和超时的连接感兴趣。
我有一些在 Windows 上处理类似服务的经验。http.sys 错误日志将显示连接断开错误,我们会知道我们的服务器是否正在断开连接。
解决方案
当客户端超时时,服务器只知道客户端已中止连接。在mod_log
的 config中,%X
格式说明符用于在请求完成后记录客户端连接的状态,这正是您在这种情况下想要知道的。
将您的日志配置为使用%X
,并在日志行中查找该X
字符。
奖励:我什至在 20 年前的 apache 开发论坛中找到了有关此功能的讨论
更新:
关于被拒绝的连接,这些不能被 apache 记录。拒绝连接是由内核在 tcp 堆栈中完成的,而不是由 apache 完成的。我能想到的最接近的解决方案(仅包括 apache)是跟踪打开连接的数量(使用mod_status
)。如果它达到最大值,您知道您可能会拒绝连接。否则,您需要设置一些监控解决方案来跟踪内核发送的 tcp 重置。
推荐阅读
- android - 带有 XML 的 BottomNavigationView 设计 *没有以编程方式
- excel - 如何在 VBA 中打开具有可变日期名称的文件?
- twilio - 入站 Twllio SMS 触发 LogicApp
- botframework - 有没有办法从 Stack Overflow 中提取共享相同标签的问题和答案?
- azure - 我可以通过设备令牌获取注册吗?
- javascript - 使用异步等待获取失败时如何捕获状态代码
- javascript - 如何在页面加载时折叠所有选项卡?
- blazor - 客户端 Blazor 代码能否“听到”服务器端引发的事件?
- excel - 循环遍历单元格以在 VBA/Excel 中生成一组命名范围
- python - Scrapy - 使用 CSS 查找可能包含不同子元素的元素