当前位置: 首页 > 知识库问答 >
问题:

逻辑应用程序和服务总线队列未正确扩展逻辑应用程序运行实例

景凌
2023-03-14

您好,我有一个关于逻辑应用程序和Azure服务总线队列的性能问题。

我有一个逻辑应用程序,看起来像这样:

(注意:延迟是为了模拟一组连接器/操作,这些连接器/操作运行大约需要2秒钟,我还使用锁令牌和会话ID来完成消息和关闭会话)

它通过峰值锁定每秒轮询服务总线以获得高吞吐量,因为我的服务总线队列使用会话在流中启用FIFO排序。因此,我正在做的是,向我的服务总线发送大约2000条具有不同会话ID的消息,以及一些根据消息而相似的消息,因为它们有时相互关联(即fifo)。

在所有消息都在队列中后启用Logic app,my Logic app一次仅处理10条消息。换句话说,它最多只能同时运行10次。

这太慢了,因为处理2000条信息需要大约15分钟。这大约是每次运行2-4秒,一次运行10次,取决于最后两个连接器,每个连接器最多需要1秒来完成消息并关闭会话。

为了解决这个问题,我做了些什么,例如:

>

  • 运行“当队列中接收到一条或多条消息时(峰值锁定)”,而将消息传递计数增加到175(最大值)。这仍然只会导致一条消息被轮询,猜测这与为队列启用的会话有关。

    在逻辑应用上打开“高吞吐量”,导致最多只能同时运行10个实例,有时甚至更少。

    关闭(甚至在定义了最大值的情况下打开)逻辑应用程序触发器上的“并发控制”开关。结果仍然相同。

    将服务总线扩展到标准层,仍然没有运气。

    尝试克隆相同的逻辑应用程序,最多并行运行5次,结果仍然相同。

    和更多...

    (值得一提的是,消息大小不超过1,5kb-1,8kb)

    我错过了什么?我想不出任何其他要更改的配置,或者使用逻辑应用和启用会话的服务总线队列的组合进行下一步尝试的任何其他想法。我是不是应该把服务巴士升级到高级?我认为这不值得,因为我还没有达到标准层的限制。

    如果我忘记发布任何有用的数据,请告诉我,我将编辑问题。

    编辑:

    2018-04-06 10:00

    我现在如何尝试一种“顺序护航”类型的解决方案,结果更糟:

    我按照这个指南做了一些修改:顺序车队指南

    我所做的修改是将“for each”循环改为“do until”。此解决方案的问题是,“获取队列中的所有消息”操作大约需要30秒才能在队列中搜索包含已定义会话ID的消息,这是非常重要的。这也导致了一种奇怪的行为,使得logic应用程序的并行运行规模也变小了。

    2018-04-06 16:00

    我现在尝试的另一个测试是,尝试跳过服务总线来测试逻辑应用程序的实例伸缩性,并且确保通过逻辑应用程序中的Http Post触发器直接从API发布到逻辑应用程序,逻辑应用程序运行的实例比服务总线之间的实例多得多。

    这意味着服务总线队列限制了逻辑应用程序运行的实例数量。

    我找不到任何可以解决这个问题的方法,即使尝试将logic应用程序克隆到同一队列中的多个数据量。。。

    有什么想法吗?

  • 共有2个答案

    郭修平
    2023-03-14

    我遇到了同样的问题。我能够绕过它的一种可能的方法是克隆逻辑应用程序。逻辑应用程序的多个副本有助于显著提高窥视锁定模式下的消耗速度。

    谢旻
    2023-03-14

    这里没有什么建议/意见,请告诉我们是否有用。

    1. 您可以在下一个可用会话中使用“当队列中的一条或多条消息处于peek lock状态时”,而不是在触发一条消息时使用,批处理触发器将提高性能
     类似资料:
    • 我在Azure logic应用程序中处理xml消息时遇到问题。我读了不少关于类似问题的文章,但不知何故,它对我不起作用:-) 我的情况: 我从一个逻辑应用程序向服务总线发布一条xml消息。似乎只有当主题采用Base64编码时,才能将消息发送到主题。所以我用下面的: 请注意,内容已经有这种格式: 执行此操作后,我看到消息被传递到服务总线主题。Service Bus Explorer工具显示以下消息文

    • 我正在尝试在我的逻辑应用程序中使用Service Bus Queue send操作,该应用程序向队列发送消息。逻辑应用程序运行时,操作返回此错误: 尽管在创建队列时,我没有启用自动转发。有什么帮助吗?

    • Adding application logic (添加应用程序逻辑) 构建一个应用时,通常需要实现自定义逻辑来处理数据,并响应客户端请求之前执行其他操作. 在 Loopback 中,可以通过以下三种方法实现. 添加 model 逻辑 - 使用 remote methods,remote hooks 和 operation hooks. 启动脚本 - 目录 /server/boot 中的文件,在应

    • 我正在尝试创建一个小的Azure逻辑应用程序,它将有一些订单流。我将在服务总线队列中获取消息。我需要在logic app中获取消息,根据消息内容,我需要执行进一步的步骤。该消息还将包含订单数据。假设有条件逻辑,如果订单类型为“new”,我需要调用HTTP请求,其中我需要在POST请求中将消息数据作为正文内容传递。 我创建了一个服务总线队列,在逻辑应用程序中,添加了服务总线触发器,当服务总线队列中收

    • 几天前,我发布了这个问题,来自Azure IOT中心的短信 我曾尝试实现建议的logic app,我的问题是logic app没有通过服务总线接收任何消息,事实上没有消息到达服务总线。当我尝试在logic应用程序中运行触发器时,它会弹出一个对话框,告诉我“When_a_message_is_received_in_a_queue”。当我运行logic应用程序时,它说工作流程在几分钟后超时。 我复制

    • 我是这些概念的新手,目前正在尝试理解我正在使用MVC概念开发的应用程序中的业务和应用程序逻辑是什么。 在我看来,大多数人都同意这样一个事实:应用程序逻辑属于控制器,业务逻辑属于模型。这也是我想要确定什么是什么的原因,所以在读题的时候要记住这一点,以免错过重点。 我听到的一种方法是将业务逻辑更多地视为一种可以由那些与编程无关的人来描述的东西,而这些人只是试图解释一切将如何工作。所以这基本上涉及到要显