如何减少Azure表存储延迟?

Ale*_*sov 5 asp.net-mvc azure azure-storage azure-table-storage azure-web-sites

我有一个相当庞大的(30毫升行,每个最多5-100Kb)表在Azure上.
每个RowKey都是Guid,PartitionKey是第一个Guid部分,例如:

PartitionKey = "1bbe3d4b"
RowKey = "1bbe3d4b-2230-4b4f-8f5f-fe5fe1d4d006"
Run Code Online (Sandbox Code Playgroud)

表每秒有600次读取和600次写入(更新),平均延迟为60ms.所有查询都使用PartitionKeyRowKey.
但是,有些读取需要3000毫秒(!).平均而言,所有读取中> 1%的读取时间超过500毫秒且与实体大小无关(在25ms内可返回100Kb行,在1500ms内可返回10Kb).

我的应用程序是在4-5个大型实例上运行的ASP.Net MVC 4网站.

我已阅读有关Azure表存储性能目标的所有MSDN文章,并已执行以下操作:

  • UseNagle 已关闭
  • Expect100Continue 也被禁用了
  • MaxConnections 对于表客户端设置为250(设置1000-5000没有任何意义)

我也检查过:

  • 存储帐户监控计数器没有限制错误
  • 虽然它们不依赖于负载,但在性能上存在某种"波浪"

这种性能问题可能是什么原因以及如何改进?

小智 0

通常,如果特定查询需要扫描大量行,则需要更长的时间。您看到的行为是特定的查询/数据吗?或者,您是否发现相同数据和查询的性能有所不同?