- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们在流量高峰期间将事件发送到 EventHub 时遇到了很多此类异常:
“无法将事件发送到 EventHub。异常:Microsoft.ServiceBus.Messaging.MessagingException:服务器无法处理请求;请重试该操作。如果问题仍然存在,请联系您的服务总线管理员并提供跟踪信息ID。”或者“无法将事件发送到 EventHub。异常:System.TimeoutException:操作未在分配的时间内完成”
你可以在这里清楚地看到它:
如您所见,当传入消息超过 400K 事件/小时(或约 270 MB/小时)时,我们会遇到大量内部错误、服务器繁忙错误、请求失败。这不仅仅是一个暂时的问题。它显然与吞吐量相关。
我们的 EH 有 32 个分区,消息保留 7 天,并分配了 5 个吞吐量单位。 OperationTimeout 设置为 5 分钟,我们使用默认的 RetryPolicy。
这里还有什么我们需要调整的吗?我们非常关心 EH 的可扩展性。
谢谢
最佳答案
可以使用有效的分区分布策略来实现发送吞吐量调整。没有任何一个旋钮可以做到这一点。以下是您设计高吞吐量场景所需的基本信息。
1) 让我们从命名空间开始:吞吐量单位(又名 TU)在命名空间级别配置。请。请记住,应用配置的 TU - 该命名空间下所有 EventHub 的聚合。如果您的命名空间上有 5 个 TU,并且其下有 5 个 eventhub - 它将被分配给所有 5 个 eventhub。
2) 现在让我们看看 EventHub 级别:如果 EventHub 分配了 5 个 TU 并且有 32 个分区 - 没有一个分区可以使用全部 5 个 TU。对于前。如果您尝试将 5TU 数据发送到 1 个分区,并将“零”数据发送到所有其他 31 个分区 - 这是不可能的。每个分区应规划的最大值为 1 TU。一般来说,您需要确保数据均匀分布在所有分区上。 EventHubs 支持 3 种类型的发送 - 这为用户提供了对分区分布的不同级别的控制:
要测量您当前的数据分布 - 使用 EventHubClient.GetPartitionRuntimeInfo用于估计哪个分区过载的 API。 BeginSequenceNumber
和 LastEnqueuedSequenceNumber
之间的差异应该可以给出该分区与其他分区负载相比的估计值。
3) 最后但并非最不重要的 - 您可以使用 SendBatch API 在发送操作级别调整性能(而不是吞吐量)。1 TU 可以购买最大 1000 条消息/秒或 1MBPS - 您将受到先达到的限制 - 这是无法更改的。如果您的消息很小 - 比如说 100 个字节,并且您每秒只能发送 1000 条消息(根据 TU 限制) - 您将首先达到每秒 1000 个事件的限制。然而,总体使用SendBatch API - 您可以批量处理 10 个 100 字节的消息,并以相同的速率推送 - 1000 条消息/秒,只需 100 个 API 调用,并改善系统的端到端延迟(因为它还有助于服务有效地持久化消息)。请记住,这里唯一的限制是最大值。可以发送的消息大小 - 256 kb(如果您使用 SendBatch API,则此限制将适用于您的 BatchSize)。
鉴于这种背景,就您而言: - 有 32 个分区和 5 个 TU - 我真的会仔细检查分区分配策略。
关于azure - 高吞吐量发送到 EventHubs 导致 MessagingException/TimeoutException/服务器无法处理请求错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33661538/
有没有一种方法我可以编写一个“工具”来分析从 C/C++ 程序生成的 x86 汇编语言并以这种方式测量性能,无论我在 1GHz 还是 3GHz 上运行它都没有关系处理器? 我在考虑更多的指令吞吐量?我
我们正在使用 NATS 并使用 3+ 节点的集群。我们有几个生产者和许多消费者。消息大小很小 (~100bytes) 但是我们的吞吐量有点高。 ~40k/秒。所有流量都在 2x10gbps 绑定(bi
我需要一些帮助才能使用 JMeter。我想记录两种不同的场景,比如点击 2 个不同的按钮。如果我尝试为 2 个用户运行,一个用户应该点击第一个按钮,另一个用户应该同时点击另一个按钮。 我知道这是基本问
在 100Gb 网络上,我创建了一个服务器来监听 4 个端口,grpc 客户端可以达到 3GB+/s 的吞吐量。然而,当服务器监听一个端口时,grpc 客户端达到了 1GB/s 的吞吐量,即使我设置了
android Handlers可行的数据IO吞吐量是多少?足以在线程之间传递原始音频或视频吗?它应该是可持续的吗? 我在 android Handler docs 中没有看到任何对此的引用, $WE
我正在使用 logstash 和 elasticsearch 构建日志系统。 RabbitMQ 用于在两个 logstash 之间排队日志消息。 消息路径如下: source log -> logst
我正在研究 .NET Core 在 Linux 机器上的性能。具体来说,确定框架本身可用的工具可能存在什么样的限制。 我一直以 ~ 50,000 pps 的价格击中盒子。到目前为止,似乎 ~ 20,0
我有一个使用 nfs 挂载的 gentoo 无盘客户端,看起来 nfs 的吞吐量很慢。 iperf 显示网络能够推送 770 Mb/s,hdparm 显示服务器上的 SATA 磁盘速度为 90 Mb/
我正在使用 Java Preferences API 来存储 Swing 应用程序的窗口位置和大小。此时此刻,我正在监听窗口调整大小/重新定位事件并在每次更改时存储位置和大小。然而,这意味着如果用户慢
我正在尝试弄清楚 DataFlow 如何扩展某些操作以及如何使其表现最佳。首先,我刚刚创建了一个简单的流程,它从 BigQuery 中读取数据(约 2500 万行,总共 30GB),进行 JSON 提
确定 Oracle Java 8 JVM 垃圾收集器吞吐量的最简单方法是什么,最好使用 JDK 命令行工具? 通过 jstat 命令,我可以获得总的垃圾收集时间(GCT 列)。根据这个值的变化与GC日
我有一个 Java 程序,它使用 HDFS 数据输入/输出流读取文件并将内容写入新文件。我的目标是找出我的 HDFS 的 I/O 吞吐量。下面是执行读/写和计时的代码片段: long start =
我了解延迟 - 消息从发件人到收件人所需的时间 - 和带宽 - 在给定时间内可以传输的最大数据量 - 但我正在努力寻找合适的术语来描述相关事物: 如果协议(protocol)是基于对话的——负载在端点
我有一个在 pesto、mod_wsgi 和 Apache 上运行的普通 WSGI 应用程序: def viewData(request): return Response("aaaaaaaa
我们计划将 10000 个 JSON 文档写入 Azure Cosmos DB (MongoDB),吞吐量单位重要吗?如果重要,我们可以增加批量负载并将其设置回较低的数字 最佳答案 是的,你可以做到。
我们计划将 10000 个 JSON 文档写入 Azure Cosmos DB (MongoDB),吞吐量单位重要吗?如果重要,我们可以增加批量负载并将其设置回较低的数字 最佳答案 是的,你可以做到。
在我的 spark 应用程序中,我正在阅读 kafka 主题。该主题有 10 个分区,因此我创建了 10 个接收器,每个接收器一个线程。通过这样的配置,我可以观察到接收器的奇怪行为。这些消费者的平均利
关于 AWS DynamoDb 吞吐量,我有些无法理解的地方。 让我们考虑强一致性读取。 现在,我明白在这种情况下,1 个容量单位意味着我每秒最多可以读取 4KB 的数据。 “每秒”这一点让我有点困惑
来自 AWS Lambda 常见问题解答: Q: Is there a limit to the number of AWS Lambda functions I can execute at onc
在内核版本 4.X 上运行 iperf tcp_ul 流量时,我观察到 tcp_ul 的吞吐量有所下降。任何人都知道,为什么会这样。 最佳答案 在内核版本 4.4 之后,他们修改了 TCP 拥塞控制算
我是一名优秀的程序员,十分优秀!