gpt4 book ai didi

azure - 具有持久功能的巨大 2 类队列操作计数

转载 作者:行者123 更新时间:2023-12-04 23:47:16 24 4
gpt4 key购买 nike

我在 Azure 中创建了我的第一个大型持久函数,它为文档的每一页运行大约 12 个事件函数。前几天我最多处理了 5000 页。我知道每个事件都会在工作项 Q 上放置一个项目,所以理论上我写了 60k 队列消息,这些消息也需要阅读,所以这是 120k Action 。

北欧 LRS GPv2 存储为 0.003 英镑/10K 类 2 Q 操作

所以这是 12 * £0.003 = 3.6p 但是我的订阅显示值(value)超过 90p 的 2 类 Q 操作,这相当于 3M Q 操作或每页 600 个 Q 操作。这大大超过了我在同一时期的消费计划的计算成本,即当天的 29 便士。我很感激还有其他消息需要进入 Q,但没想到这么多!

我是否遗漏了一些关于 Durable Functions 如何使用 Q 的内容,是否有任何我可以注意或监控的内容来尝试计算单个页面它生成的所有 Q(成本)操作,以便我可以弄清楚如何减少它们。

感谢任何见解,因为我喜欢耐用的功能,但存储成本开始变得令人望而却步!我将转向 v1 以降低成本,但仍想了解这一点,以了解这是否只是功能成本,或者我是否在我的功能中做一些低效的事情。

更新 3 可能最有用

我创建了一个新版本,它只接受一个文件,一个事件将其拆分为单页 pdf,然后每个页面由另一个事件处理以转换为 png。
我创建了一个新的存储帐户并打开了每个日志记录选项,日志记录被证明是最有用的,我上传了一个 100 页的 PDF,然后当我下载并分析该函数运行期间的日志时,我看到以下内容:

大约在 10:31 到 10:43 之间进行处理,在此期间我从日志文件中看到:

203 PutMessage (which makes sense)
203 DeleteMessage

7868 GetMessage - all from the workitems queue

26445 GetMessages - all from the control queues, breakdown was
control-00 - 6217
control-01 - 6375
control-02 - 5134
control-03 - 8719

除此之外,我让应用程序闲置(在消费计划中),每小时我看到大约:
3500 - GetQueueMetadata - 700 against each Q, control 00-03 and workitems
3500 - PeekMessage - 700 against each Q, control 00-03 and workitems

(这里可能缺少最终日志,我认为它每 10 秒使用每种类型的消息轮询 5 个 Q 中的每一个,因此每小时会进行 3600 个 Q 操作,不知道为什么它需要轮询控制和工作项 Q什么都没有提交处理?)

在我看来,当函数实际执行操作时,会触发大量的 GetMessage 和 GetMessages,查看日志,如果这有助于诊断问题,我可以提供日志。

(如果相关,实例计数在完成时从 0 变为 8,想知道实例与 Q 请求的数量之间是否存在相关性)

更新 1

所以我运行了以下命令,希望能给我当天的所有函数调用:
let start = datetime(2018-06-12T00:00:00);
traces
| where timestamp > start and timestamp < start + 24h
| where message startswith "function started"
| summarize count()

这给了我总共 19,939 个,这几乎是正确的,因为虽然有多个函数,但我实际处理的大约 3,500 个页面的每个页面只调用其中一些函数。

然后,我设法找出如何查询该存储帐户上 Q 的指标,一旦我制定了过滤器,我发现以下是所有 Q 事务的位置:

Q Transactions

看起来像一个荒谬的Q阅读量?只是为了检查一下,我还查看了 Q 和 25K 上的消息量似乎大致正确:

Messages

我已经转移到 V1 存储帐户,并尝试在今天再次运行大约 8K 页面,因此当它们都过滤到存储帐户的指标时,我会看到指标的外观。

注意:查看图表,我注意到 13 日的数据似乎更合理,我不相信我改变了任何重要的东西,除了可能打开采样以获取应用洞察,因为这会产生大量数据!

更新 2 昨天在新的 v1 存储帐户上看到了同样巨大的 8k ish 页面处理数量。

enter image description here

最佳答案

仅队列的数量级似乎有点奇怪。

一般来说,每个事件函数调用将产生两个队列消息 ,一个用于请求,一个用于响应。还有表存储操作和队列轮询操作的成本,但我假设您只关注这个问题的队列消息?

有助于诊断的一件事是查看一切是否正确执行。您是否设置了 Application Insights?看看我们的Diagnostics documentation了解如何使用 Application Insights 查询业务流程跟踪数据。具体来说,检查您是否真的在每个文档执行 12 个事件功能,或者是否有其他原因导致这些极高的成本。

关于azure - 具有持久功能的巨大 2 类队列操作计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50841267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com