Вижу, что процент памяти достиг 90% и следовательно сервис приложения не работает. Событие после завершения выполнения не снижает использование памяти.
Процент памяти
- .csproj файл
- Код контроллера
Конструктор контроллера
Dispose функция - program.cs
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
// Add configuration
builder.Configuration.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
var app = builder.Build();
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
Даже после обновления шаблона Singleton для клиента Cosmos использование памяти продолжает увеличиваться.
Внесены изменения в следующие файлы
- Program.cs
{
using Azure.Identity;
using Microsoft.Azure.Cosmos;
using EventGridL3AppService.Constants;
///
/// Program class.
///
public static class Program
{
///
/// Main method to execute.
///
/// Command line arguments.
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
// Register CosmosClient as a singleton
builder.Services.AddSingleton(serviceProvider =>
{
string endpointUri = "https://syntheticsl3testscosmosdb.docum ... e.com:443/";
var credential = new DefaultAzureCredential();
return new CosmosClient(endpointUri, credential);
});
// Register the container as a singleton
builder.Services.AddSingleton(serviceProvider =>
{
var cosmosClient = serviceProvider.GetRequiredService();
return cosmosClient.GetContainer(EventGridL3Constants.EventGridCosmosDBId, EventGridL3Constants.EventGridCosmosContainerId);
});
builder.Services.AddControllers();
var app = builder.Build();
// Configure the HTTP request pipeline.
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
}
}
}
- Код контроллера
{
using EventGridL3AppService.Constants;
using EventGridL3AppService.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Cosmos;
using Microsoft.Azure.EventGrid.Models;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
[ApiController]
[Route("[controller]")]
public class EventGridL3AppController : ControllerBase
{
private readonly ILogger logger;
private CosmosClient cosmosClient;
private Container container;
public EventGridL3AppController(ILogger logger, CosmosClient cosmosClient, Container container)
{
this.logger = logger;
this.cosmosClient = cosmosClient;
this.container = container;
}
[HttpPost]
public async Task Post()
{
// Read the request body
this.logger.LogInformation("Webhook trigger recieved, app service starting processing the request");
using (StreamReader reader = new StreamReader(this.Request.Body))
{
string requestBody = await reader.ReadToEndAsync().ConfigureAwait(false);
var events = JsonConvert.DeserializeObject[*]>(requestBody);
string response = string.Empty;
foreach (var eventGridEvent in events)
{
this.logger.LogInformation($"Received event of type - {eventGridEvent.EventType}");
...
// Send events to cosmosDb continer
}
}
}
}
}
- файл csproj
net6.0
enable
enable
Подробнее здесь: https://stackoverflow.com/questions/791 ... pp-service
Мобильная версия