gunicorn - 当工人重新启动时,是否可以让 gunicorn 重用 pid?
问题描述
我对 prometheus 的多进程模式 ( MultiProcessCollector
) 有问题:每次 gunicron worker 重新启动时(例如超时),它都会以新的 pid 开始,因此 prometheus 会创建新文件来存储指标。但是当收集指标时,prometheus 客户端会检查所有文件。在生产一天后,我的/metrics/
端点可以响应慢至 2 秒(甚至更多)。
Prometheus 文档说删除指标文件是不安全的,但我有一个想法,只有当它们没有更新一段时间(例如 2 分钟)时才删除这些文件,这意味着相关的工作人员已经死了。在child_exit
gunicorn 的钩子上做这个。但是我担心prometheus在擦除后会丢失一些数据,但另一方面它仍然知道应用程序重启后的最新计数器,所以这部分是有问题的。
还有其他想法吗?
解决方案
这是 Python Prometheus 客户端库的一个已知问题。例如,请参阅此问题https://github.com/prometheus/client_python/issues/568。我会说去吧。还可以考虑完全放弃 Gunicorn,转而依赖 Uvicorn 和容器副本。
推荐阅读
- python - Python,希望将文本从左向右移动
- php - 如何为初学者开发者构建字典 Web 应用程序
- spring - 是否可以将 Spring Data Rest 配置为使用 id 作为引用而不是 URI?
- reactjs - 跳过第一个 useEffect 渲染自定义钩子
- c# - Fluent-nhibernate 与 .net 核心 NHibernate.Driver.MySqlDataDriver
- c# - 当我按下按钮时,如何制作带有滚动条的标签之类的东西
- java - 关闭应用程序时如何保存 TextViews?
- php - 此路由不支持 PUT 方法。支持的方法:GET、HEAD。(使用资源)
- java - java.lang.IllegalStateException:设置正文参数时名称为空
- javascript - 如何使用电子释放忽略多个目录和文件