Azure表延迟增加

时间:2018-09-15 08:39:21

标签: performance azure-table-storage

我正在尝试创建一个可以将数据有效地写入Azure Table的应用程序。为了测试存储性能,我创建了一个简单的控制台应用程序,该应用程序在循环中发送硬编码的实体。每个条目为0.1 KB。数据分批发送(每批100个项目,每批10 KB)。对于每一批,我准备使用具有相同分区键的条目,该分区键是通过增加全局计数器而生成的-因此,我从未向同一分区发送多个请求。另外,我通过增加/减少线程数来控制并行度。每个线程同步发送批处理(没有请求重叠)。 如果使用1个线程,则每秒看到5个请求(5个批处理,500个实体)。当时,Azure门户指标显示表延迟低于100毫秒-相当不错。 如果将踏板数量增加到12个,则传出请求将增加12倍。此速率在几分钟内保持稳定。但是,由于某种原因,我开始受到限制-我看到延迟增加,请求数量下降。

在下面您可以看到帐户指标-高亮点显示每分钟2K31个事务(批次)。每秒3850个条目。如果将线程增加到50个,则等待时间最多增加4秒,并且事务速率下降到每秒700个请求。

account metrics

根据documentation,我应该能够在一个帐户内每秒最多发送2万笔交易(我的测试帐户仅用于性能测试)。 20K批次表示200K条目。那么问题来了,为什么3K输入后我会被节制?

测试详细信息:

  • Azure数据中心:美国西部2。
  • 我的位置:洛杉矶。
  • 应用程序用C#编写,使用CosmosDB.Table nuget并进行以下配置:ServicePointManager.DefaultConnectionLimit = 250,禁用了Nagles算法。
  • 主机具有1Gb互联网链接的强大功能(i7、8核,没有高CPU,在测试期间未观察到高内存)。

PS:我已经阅读了文档

  

单个分区服务器的可伸缩性直到负载均衡操作开始并重新平衡分区键范围之前,系统处理分区突发流量的能力受到限制。

等待了30分钟,但情况没有改变。

编辑 我收到一条评论,即E2E延迟不能反映服务器问题。 因此,下面是一个新图表,不仅显示了E2E延迟,还显示了服务器的延迟。如您所见,它们几乎是相同的,这让我认为问题的根源不在客户端。

new graph

0 个答案:

没有答案