【发布时间】:2013-12-22 11:06:24
【问题描述】:
先决条件:
Azure 存储 3.0.0
VM 大小:小(1 核)
表:1 个分区 - 2k 行,10 列
故事:
一段时间以来,我一直在观察我的一个角色的高 CPU 使用率,然后我决定稍微挖掘一下。在分析器的帮助下,我发现了热门路径。
一旦我意识到不是我的代码产生了这样的负载,我就删除了所有内容,只从表本身中读取。我也删除了自定义实体解析器。阅读代码就像在Microsoft's how-to中一样。
不幸的是,我只发现了一种类似的情况,那里的答案什么也没给我: similar situation here
问题:
有什么想法吗?
【问题讨论】:
-
你能发布你代码的相关sn-ps吗?你是如何读取存储的?您是否将任何 ServicePointManager 属性(如 UseNagleAlgorithm 和 Expect100Continue)设置为 false 并更改默认连接限制?
-
@Igorek 当然,UseNagleAlgorithm 和 Expect100Continue 设置为 false。 DefaultConnection 限制在这里不会有问题。根据热路径截图,它在 EndGetResponse 之后立即消耗 cpu。序列化?
-
序列化很可能是罪魁祸首......数据是否可能是使用自定义实体解析器保存的,而现在引擎很难仅处理该特定数据的反序列化?跨度>
-
@Igorek 最初这些实体是使用自定义解析器保存的。在我提到的问题中,我将其关闭。所以我们可以说现在这个实体中有 10 个字段,在我的测试期间只有一个被映射回实体。话虽如此,我认为这里的主要问题在于 ODataReaderCore.InterceptException 方法。可以吗?
标签: performance azure cpu-usage azure-table-storage