先决条件:
Azure 存储3.0.0
VM大小:小型(1核)
表:1 个分区 - 2k 行,10 列
故事:
我观察我的一个角色的高 CPU 使用率有一段时间了,然后我决定深入研究一下。在分析器的帮助下,我发现了热路径。
一旦我意识到不是我的代码产生了这样的负载,我就删除了除了表本身的读数之外的所有内容。我也删除了自定义实体解析器。读取代码就像 Microsoft's how-to 中的.
不幸的是,我只发现了一种类似的情况,而那里的答案没有给我任何信息: similar situation here
问题:
有什么想法吗?
最佳答案
我所在的团队负责开发 Azure 存储的客户端库。我们将对此进行研究,看看是否可以在我们这边重现它。话虽这么说,如果您使用 3.0 和 POCO 类型,您可以通过在 CloudTableClient 上设置 PayloadFormat 或通过 TableRequestOptions 传递它来切换到 JSON nometadata(例如,请参阅 here )。这不仅会减少负载,而且会使用 Newtonsoft JSON 反序列化器而不是 Odata。很高兴看看您是否可以在该配置下重现高 cpu。
此外,您能否提供有关您的场景的更多信息,即每秒查询数等。最好在调试器下运行它,看看是否有异常被抛出并被 odata 内部吸收。
关于performance - 从表存储读取期间 CPU 使用率高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20567394/