Я выполняю веб-задание .net в службе приложений Azure в производственной среде. Это веб-задание считывает файл .json из BLOB-объекта Azure и сохраняет его в базе данных sql. Некоторые из моих файлов содержат данные размером до 2 ГБ.
У меня возникают исключения нехватки памяти в службе приложений Azure, однако на машине разработки все работает нормально.
Я хотел бы попробовать несколько вариантов со стороны Azure.
- Преобразование веб-задания в функцию Azure, которая будет автоматически масштабироваться в соответствии с требованиями.
- В настоящее время я использую Premium v2 P3V2. Ниже приведено изображение плана обслуживания приложения.

Я уже провел некоторую оптимизацию кода, как показано ниже, но это не помогает
using (var zipBlobFileStream = new MemoryStream())
{
await blockBlob.DownloadToStreamAsync(zipBlobFileStream);
await zipBlobFileStream.FlushAsync();
zipBlobFileStream.Position = 0;
using (var zip = new ZipArchive(zipBlobFileStream))
{
var serializer = new JsonSerializer();
foreach (var entry in zip.Entries)
{
if (entry.Length == 0) continue; // Skip if entry has no content
using (var stream = entry.Open())
using (var streamReader = new StreamReader(stream))
using (var jsonReader = new JsonTextReader(streamReader))
{
// Move to the start of the array
while (jsonReader.Read() && jsonReader.TokenType != JsonToken.StartArray) ;
// Read each object in the array
while (jsonReader.Read() && jsonReader.TokenType != JsonToken.EndArray)
{
// Deserialize JSON object directly from the stream
var messageItem= serializer.Deserialize(jsonReader);
var DataItems = new DataItems
{
items = new List { DataItems }
};
result.Add(MessageItems);
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/780 ... -huge-data