【问题标题】:Azure AppendBlob number of block/writesAzure AppendBlob 块/写入数
【发布时间】:2016-07-07 10:26:24
【问题描述】:

我在 Azure 中使用 AppendBlob 进行日志记录。一段时间后,我经历了409 Conflict Error。我的猜测是达到了最大块/写入量(50.000)。

有什么方法可以获取 blob 中的块/写入数?

【问题讨论】:

  • 查看http状态信息(e.RequestInformation.HttpStatusMessage),里面有详细的错误信息。
  • 谢谢。是的,上面写着The block count exceeds the maximum permissible limit. 有什么方法可以用 C# 找出 blob 中的块数吗?

标签: c# azure azure-blob-storage


【解决方案1】:

Azure Reference中,您可以找到Blob Service Error Codes的表,其中列出了针对Blob服务的操作可能返回的错误代码包括Conflict 409,请参见下文。

AppendBlob的最大值的详细信息,您可以参考下面的参考页面Understanding Block Blobs, Append Blobs, and Page BlobsAbout Append Blobs部分。

附加 blob 中的每个块的大小可以不同,最大为 4 MB,附加 blob 最多可包含 50,000 个块。因此,附加 blob 的最大大小略大于 195 GB(4 MB X 50,000 块)。

正如@yonisha 所说,如果使用 REST API Append Block,您可以通过获取响应标头 x-ms-blob-committed-block-count 来获取 AppendBlob 的块数,这是 blob 中存在的已提交块数,可用于控制可以完成多少附加操作。

对于 C#,通过属性 AppendBlobCommittedBlockCountBlobProperties 获取对象 CloudAppendBlob 的块计数,请参阅参考 BlobProperties.AppendBlobCommittedBlockCount Property

【讨论】:

    【解决方案2】:

    对于 C#,您可以简单地发出 appendBlob.Properties.AppendBlobCommittedBlockCount。

    维萨姆

    【讨论】:

    • 这是旧的,但我刚刚遇到了同样的问题。 Wissam 所说的是使用类似 var blockCount = appendBlob.Properties.AppendBlobCommittedBlockCount;然后如果块数将超过 50k,则获取一个新的 blob。
    【解决方案3】:

    正如Operations on Append blob documentation 中所写,Append blob type 上唯一的特定可用操作是 'Append Block' 操作。

    不过,您可以从 Append Block 操作的 x-ms-blob-committed-block-count response header 中获得 committed block count。来自文档:

    blob 中存在的已提交块的数量。这个可以用 来控制可以完成多少附加操作。

    【讨论】:

      猜你喜欢
      • 2018-08-23
      • 1970-01-01
      • 2016-05-11
      • 2020-06-03
      • 1970-01-01
      • 2020-03-18
      • 2020-08-24
      • 1970-01-01
      • 2022-09-23
      相关资源
      最近更新 更多