ruby-on-rails - 当在Passenger+Nginx+Rails 配置中处理请求需要很长时间时检测/警报
问题描述
我有一个为 Rails 设置了 Nginx 的非企业乘客。
我想知道是否有任何方法可以检测请求是否需要xyz
几秒钟。这里的挑战是在处理请求时检测/警报,即在获得响应之前。
出现上述情况的原因是因为我想知道特定请求何时超过了应该执行的明显/预期时间。也许它卡在某个地方,需要人工干预。也许我不可能收到回复,我应该调查一下。(我在这里采取极端情况)。但是除非其他请求处理完整,否则不能直接杀死该进程。因此,在这种情况下,警报足以帮助我。
找到了一些参考资料,例如:
https://www.phusionpassenger.com/library/indepth/hooks.html#max_request_time_reached 但这更像是让乘客有责任终止进程。在我的情况下这是不可行的,因为必须有其他必须进行的请求。
https://blog.appoptics.com/monitoring-rails-get-hidden-metrics-rails-app/但这更像是依靠rails来完成这项工作。它不是
while the request is on-going
。
导轨版本:4.1.15
任何线索将不胜感激!TIA
更新(澄清评论中的问题,以便其他人也可以查看): @anothermh 让我们举一个简单的例子,我想进行 API 调用,最终会提醒我进程 PID 上的 XYZ 请求是花费比预期值更长的时间。请看一看。我已经设置了警报系统,只是我也想收到这种情况的通知。
这种警报要求的原因是,有一次,我们最终处于 Rails 进行大量数据库调用并陷入无限循环的状态,而不是只进行一次并继续前进。这种不确定的状态导致 ActiveRecord 查询(Grafana 中的图表)激增,这就是我们如何知道有什么东西被卡住了。但是,如果我们知道请求开始花费的时间比预期的要长,我们本可以更快地采取行动。
解决方案
推荐阅读
- sql - SQL Server 日期 - 1,第一个月的问题
- html - Firefox 为相对定位的元素保留空间,即使它被放置在别处
- rest - REST API 删除操作将 URL 作为参数传递
- android-studio - 无法应用插件 [id 'com.android.application'] - 支持的最低 Gradle 版本为 4.4
- r - 我想将街道地址分成两列。一个带有街道编号 另一个带有街道名称
- node.js - 如何在运行 docker 容器时更新配置文件(.env 文件)
- resources - 如何使用仪表板设置 openstack 动态资源分配和实时迁移?
- javascript - 输入字段值不应大于其他字段值
- oracle - 选择按列标题排序后,屏幕显示报告中的第一个值
- r - 向量化分配函数并在全局环境中创建对象