如何限制从EventProcessorHost对Blob存储的调用?

问题描述 投票:0回答:1

我有两个Azure Eventhub,每个都有32个分区。每秒大约有700个事件通过事件中心,首先是一个,然后是另一个。一个EventHub具有3个并发读取器/ EventProcessorHost,另一个仅具有一个。

[我的问题是,C#EventProcessorHost似乎对Blob存储进行了大量的调用,例如租赁管理和检查点。我们平均在通话,每秒800个电话。

我们这样注册EventProcessorHost

            _eventProcessorHost = new EventProcessorHost(
                _eventHubOptions.CurrentValue.EventHubName,
                _eventHubOptions.CurrentValue.ConsumerGroupName ?? PartitionReceiver.DefaultConsumerGroupName,
                _eventHubOptions.CurrentValue.EventHubConnectionString,
                _eventHubOptions.CurrentValue.StorageConnectionString,
                _eventHubOptions.CurrentValue.StorageName);

            // Reduce lease renewal throughput for storage accounts to save price
            _eventProcessorHost.PartitionManagerOptions = new PartitionManagerOptions()
            {
                LeaseDuration = TimeSpan.FromSeconds(60),
                RenewInterval = TimeSpan.FromSeconds(50)
            };

            var eventProcessorOptions = new EventProcessorOptions
            {
                InitialOffsetProvider = partitionId =>
                    EventPosition.FromEnd(),
                EnableReceiverRuntimeMetric = true,
                MaxBatchSize = 400,
                PrefetchCount = 400,
            };

            await _eventProcessorHost.RegisterEventProcessorFactoryAsync(_eventProcessorFactory, eventProcessorOptions);

我们正在寻求限制对存储的调用数量。正如您在上面看到的,我们还将租约期限从默认的30秒延长到最长60秒。

我们已经实现了它,所以检查点每2000条消息发生一次,这意味着平均而言,每个分区的检查点不超过15秒。

这是协调EventProcessorHosts的正常数量的存储调用吗?我还有其他可以转动的刻度盘或旋钮吗?调整分区以限制存储调用的数量?

我有两个Azure Eventhub,每个都有32个分区。每秒大约有700个事件通过事件中心,首先是一个,然后是另一个。一个EventHub具有3个并发阅读器/ ...

c# azure-eventhub
1个回答
0
投票

鉴于您已经优化了处理器主机和分区管理器选项,所以我只推荐几件事:

© www.soinside.com 2019 - 2024. All rights reserved.