有没有办法阻止Azure限制我的csv读取速度?

时间:2018-01-26 16:23:45

标签: .net azure azure-cloud-services

我编写的.Net应用程序必须读取存储内存中每条记录的CSV文件。在我的笔记本电脑上,这个文件只需不到一秒的时间......但是,由于部署到Azure中的Standard_D11_v2计算机上,我的应用程序的这部分时间超过了15分钟而且我无法解释这么多的性能损失。当我运行快速测试以查看读取单行所需的时间(来自相同的csv文件)时,我的笔记本电脑需要0.014毫秒,而天蓝色需要7.391毫秒(长525倍!)。

我使用Josh Close的CsvHelper进行阅读,而不是在读取循环中做任何密集的事情。该应用程序部署为云服务,Azure机器是标准(没有高级存储),但这似乎是一个相当简单的任务的性能过度下降。有没有其他人遇到Azure部署在读取CSV文件时速度很慢的问题?关于如何加速申请的任何建议?

Csv阅读代码供参考:

TextReader textReader = new StreamReader(filepath);
CsvReader csv = new CsvReader(textReader);

while (csv.Read())
{
    // Get record from file
    var record = (IDictionary<string, object>)csv.GetRecord<dynamic>();

    if (record != null)
    {
       // Get 7 fields from record 
       // create new object from the fields
       // store object in dictionary
    }
}

编辑 - 除此之外,csv文件本地存储在运行该应用程序的计算机上。

1 个答案:

答案 0 :(得分:0)

云服务的底层虚拟机具有非常低的IOPS,似乎它可能是造成此问题的原因。我通过云服务分配的机器是D11_V2标准,其最大IOPS为4x500。

我设置了自己的VM(DS3_V2 Promo,最大IOPS为16000),现在csv读取时间不到一秒,代码没有变化。