gpt4 book ai didi

azure - Azure Function 应用程序的 DocumentDB 写入性能缓慢

转载 作者:行者123 更新时间:2023-12-02 06:48:42 25 4
gpt4 key购买 nike

我正在将 documentDB 与 Azure Function App 结合使用。我在 JS 中创建了一个基本的 HTTPtrigger 以在 documentDB 中存储(插入)条目。

收集的数据吞吐量设置为 2500 (RU)。

这里 req.body 是一个数组,req.body.length 大约有 2500 个对象,导致大小为 1 MB,我认为这是相当小的。

module.exports = function (context, req) {
context.bindings.document = [];
if (req.body) {
//if(req.body instanceof Array){context.log("It is an array");}
context.bindings.document = req.body; // here document is function app parameter
res = {status: 200};
}
else {
res = {
status: 400,
body: "Pass Parameters"
};
}
context.done(null, res);};

对于功能应用程序的每个请求(POST),平均需要大约 30-40 秒来执行并将值存储在集合中,这确实很长。这会导致并行请求的连接超时。

  • 是否有任何性能调整可以与 documentDB 或 Azure 函数应用一起使用来降低执行时间?

  • Function App 如何在后台处理 documentDB?它是否利用了最佳实践?

我熟悉其他 NoSQL 中的批量插入/更新操作,但找不到 documentDB 的任何内容。

最佳答案

我们的输出绑定(bind)正在枚举您提供给我们的文档数组并一个接一个插入文档。这对于大多数情况来说都很好,但如果您有高级批量导入要求,则可能不适合您。

DocumentDB 客户端 API 一般不支持批量插入操作,但是可以通过编写服务器端存储过程(例如 here )来逐例完成这些操作。虽然 Azure Functions 通常无法使用该存储过程方法,但如果需要,您可以自己使用 DocumentDB 客户端 SDK 来执行此操作。

您可能探索的另一个选项是在 http 函数中获取初始数组输入,并将其分成较小的文档组,将它们推送到导入 Azure 队列中(使用我们的队列绑定(bind)文档 here )。然后,您可以有一个单独的函数来监视该队列,并使用输出绑定(bind)(如上面所做的那样)来导入这些较小的文档集。队列还可以横向扩展 - 多个文档集将并行导入。

关于azure - Azure Function 应用程序的 DocumentDB 写入性能缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42172174/

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