【发布时间】:2015-10-12 19:41:54
【问题描述】:
我正在尝试使用新的 Azure 附加 blob 和 Azure 存储 SDK 6.0.0 为 Azure 中的应用程序创建记录器。因此,我创建了一个快速测试应用程序,以更好地了解附加 blob 及其性能特征。
我的测试程序简单地循环 100 次并将一行文本附加到附加 blob。如果我使用同步 AppendText() 方法,一切正常,但是,它似乎仅限于每秒写入大约 5-6 个追加。所以我尝试使用异步AppendTextAsync()方法;但是,当我使用此方法时,循环运行得更快(如预期的那样),但附加 blob 丢失了大约 98% 的附加文本,而没有引发任何异常。
如果我添加一个Thread.Sleep 并在每次追加操作之间休眠 100 毫秒,我最终会得到大约 50% 的数据。睡眠 1 秒,我得到所有数据。
这似乎类似于在 v5.0.0 中发现但在 v5.0.2 中修复的问题:https://github.com/Azure/azure-storage-net/releases/tag/v5.0.2
如果您想尝试重现此问题,这是我的测试代码:
static void Main(string[] args)
{
var accountName = "<account-name>";
var accountKey = "<account-key>;
var credentials = new StorageCredentials(accountName, accountKey);
var account = new CloudStorageAccount(credentials, true);
var client = account.CreateCloudBlobClient();
var container = client.GetContainerReference("<container-name>");
container.CreateIfNotExists();
var blob = container.GetAppendBlobReference("append-blob.txt");
blob.CreateOrReplace();
for (int i = 0; i < 100; i++)
blob.AppendTextAsync(string.Format("Appending log number {0} to an append blob.\r\n", i));
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
有谁知道我在尝试将文本行附加到附加 blob 时是否做错了什么?否则,知道为什么这会丢失数据而不会引发某种异常吗?
我真的很想开始使用它作为我的应用程序日志的存储库(因为它主要是为此目的而创建的)。但是,如果日志记录的速率超过每秒 5-6 个日志,那么日志会在没有警告的情况下丢失,那将是非常不可靠的。
任何想法或反馈将不胜感激。
【问题讨论】:
标签: azure azure-storage azure-blob-storage