Mar*_*ung 5 azure azure-functions
我有一个在消费计划上运行的azure函数,它由服务总线主题触发,然后简单地将另一个消息添加到队列中(所以基本上没有处理,只有IO).触发主题以~1000 /秒的速率填充.我天真地认为这个功能可以很容易地保持同步,但事实上它已经无可救药地被压倒了,主题订阅很快就会填满.我已经运行了几个小时,所以我怀疑它已完全扩展.
我应该从功能中获得多少性能?吞吐量大约是每秒数千个?
编辑:我经常在日志中看到此错误:
连接尝试持续时间跨度为00:00:00.TCP错误代码10013:尝试以其访问权限禁止的方式访问套接字.
看起来功能在大规模服务总线上效果不佳?
编辑2解决方案 替换此绑定:
public static async Task Run(BrokeredMessage msgin, Binder binder, TraceWriter log)
{
var collector = await binder.BindAsync<IAsyncCollector<BrokeredMessage>>(
new ServiceBusAttribute("my-queue"));
...
}
Run Code Online (Sandbox Code Playgroud)
有了这个:
public static IAsyncCollector<BrokeredMessage> collector;
public static async Task Run(BrokeredMessage msgin, Binder binder, TraceWriter log)
{
collector = collector ?? await binder.BindAsync<IAsyncCollector<BrokeredMessage>>(
new ServiceBusAttribute("my-queue"));
...
}
Run Code Online (Sandbox Code Playgroud)
防止套接字耗尽,该功能能够与生产者保持同步没有问题.
小智 3
我在我的 Azure 函数中遇到了同样的问题。根本原因是我耗尽了所有端口,因为我在 Run 方法中创建了 TCP 连接。
因此,当同一台机器上有许多并行执行时,它们都会创建连接,最终耗尽所有端口。
在这种情况下,连接是作为 ServiceBus 客户端创建的一部分创建的,并将其移至静态变量解决了该问题。
归档时间: |
|
查看次数: |
541 次 |
最近记录: |