SmallChi / JT808Gateway

JT/T808 Gateway,JT808 Gateway, GB808 Gateway(support 2011, 2013, 2019 version) JT/T808网关、JT808网关、GB808网关(支持2011、2013、2019版本)
MIT License
183 stars 117 forks source link

windows环境下QueueServerHosting占用内存过大 #29

Closed ahern2012 closed 6 months ago

ahern2012 commented 6 months ago

windows环境下使用kafka队列接入1200多台终端,QueueServerHosting占用内存会越来越大,大概每秒0.1M的速度增长,直至占用内存100%,始终找不到是哪出问题了

SmallChi commented 6 months ago

这种就是你使用的方式有问题?

ahern2012 commented 6 months ago

QueueServer代码

var builder = WebApplication.CreateBuilder(args).Inject();

// 配置服务
builder.Services
    .AddJT808Configure()
    .AddWebApiClientTool(builder.Configuration)
    .AddGateway(builder.Configuration)
    .AddServerKafkaMsgProducer(builder.Configuration)
    .AddServerKafkaMsgReplyConsumer(builder.Configuration)
    .AddServerKafkaSessionProducer(builder.Configuration)
    .AddTcp()
    .AddUdp();

builder.Services.AddCors(options =>
                   options.AddPolicy("jt808", builder =>
                   builder.AllowAnyMethod()
                          .AllowAnyHeader()
                          .AllowCredentials()
                          .SetIsOriginAllowed(o => true)));

// 配置WebHost
builder.WebHost.ConfigureKestrel((context, options) =>
{
    var jT808Configuration = context.Configuration.GetSection(nameof(JT808Configuration)).Get<JT808Configuration>();
    options.ListenAnyIP(jT808Configuration.WebApiPort);
});

// 添加控制器
builder.Services.AddControllers().AddInject();

var app = builder.Build();
app.UseCors();
app.UseAuthorization();
app.UseInject();
app.MapControllers().RequireCors("jt808");

await app.RunAsync();

var builder = WebApplication.CreateBuilder(args).Inject();

QueueService代码

var builder = WebApplication.CreateBuilder(args).Inject();
// 配置服务
builder.Services.AddJT808Configure()
            .AddClientKafka()
            .AddMsgConsumer(builder.Configuration)
            .AddMsgReplyProducer(builder.Configuration)
            .AddSessionConsumer(builder.Configuration)
            .AddReplyMessage<JT808QueueReplyMessageHandlerImpl>()
            .AddSessionNotice<JT808SessionNoticeServiceImpl>();

builder.Services.AddRemoteRequest();
builder.Services.AddHostedService<SendCommandJob>();
builder.Services.AddHostedService<AlarmMessageConsumerJob>();
// 添加控制器
builder.Services.AddControllers().AddInject();

var app = builder.Build();

app.UseInject();
app.MapControllers();

await app.RunAsync();

请大佬帮忙分析下哪里有不对

SmallChi commented 6 months ago

是QueueServer代码有问题还是QueueService代码有问题,这个看不出来喔,你可以用dotnet的dump分析下是哪个对象引起的。

ahern2012 commented 6 months ago

好的,谢谢大佬