有没有办法防止 Azure 限制我的 csv 读取速度?
Is there a way to prevent Azure from throttling my csv read speed?
我编写的 .Net 应用程序必须读取存储在内存中的每条记录的 CSV 文件。在我的笔记本电脑上,相关文件的处理时间不到一秒......但是自从部署到 Azure 中的 Standard_D11_v2 机器后,我的应用程序的这一部分花费了超过 15 分钟,我无法解释那么多性能打击。当我 运行 快速测试以查看读取一行(从相同的 csv 文件)需要多长时间时,我的笔记本电脑需要 0.014 毫秒,而在 Azure 上需要 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 文件本地存储在应用程序 运行 所在的机器上。
云服务的底层虚拟机的 IOPS 非常低,这似乎是导致此问题的原因。云服务分配给我的机器是 D11_V2 标准,最大 IOPS 为 4x500。
我设置了自己的 VM(DS3_V2 Promo,其最大 IOPS 为 16000),现在读取 csv 不到一秒,代码没有任何变化。
我编写的 .Net 应用程序必须读取存储在内存中的每条记录的 CSV 文件。在我的笔记本电脑上,相关文件的处理时间不到一秒......但是自从部署到 Azure 中的 Standard_D11_v2 机器后,我的应用程序的这一部分花费了超过 15 分钟,我无法解释那么多性能打击。当我 运行 快速测试以查看读取一行(从相同的 csv 文件)需要多长时间时,我的笔记本电脑需要 0.014 毫秒,而在 Azure 上需要 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 文件本地存储在应用程序 运行 所在的机器上。
云服务的底层虚拟机的 IOPS 非常低,这似乎是导致此问题的原因。云服务分配给我的机器是 D11_V2 标准,最大 IOPS 为 4x500。
我设置了自己的 VM(DS3_V2 Promo,其最大 IOPS 为 16000),现在读取 csv 不到一秒,代码没有任何变化。