C# Masstransit 在空闲时使用 30% CPU

问题描述 投票:0回答:1

我几天来一直在寻找答案,以找出为什么我的 C# MassTransit 配置在空闲时使用如此多的 CPU。

我发现其他用户提出同样问题的回复很少,大多数人都说“你一定做错了什么”。问题是,我已经按照 MassTransit 网站上的示例进行操作,甚至完成了一个简单的项目,但仍然看到它在空闲时使用 30+% 的 cpu。

有什么办法可以让它在闲置时使用0-10%吗?在我们的环境中,运行一个空闲时消耗 30% 以上 cpu 的进程是很重要的。

这是我如何在 dotnet 7 应用程序中配置 MT 的示例:

.ConfigureServices((host, services) =>
{

IAgentInformation agentInformation = new AgentInformation(host.Configuration);

services.AddMassTransit(x =>
{
    x.SetKebabCaseEndpointNameFormatter();

    var entryAssembly = Assembly.GetEntryAssembly();

    x.AddConsumer<AgentConsumer>();
    x.AddSagaStateMachines(entryAssembly);
    x.AddSagas(entryAssembly);
    x.AddActivities(entryAssembly);

    x.UsingRabbitMq((context, cfg) =>
    {
        cfg.Host(agentInformation.ATLASServer, "/", h =>
        {
            h.Username(agentInformation.RabbitId);
            h.Password(agentInformation.Rabbit);
        });

        cfg.ConfigureEndpoints(context);
    });
    services.AddHostedService<Worker>();
});
});

食用时:

public class AgentConsumer : IConsumer<ServerMessageContract>

{ 只读 ILogger _logger;

public AgentConsumer(ILogger<AgentConsumer> logger)
{
    _logger = logger;
}

public Task Consume(ConsumeContext<ServerMessageContract> context)
{
    _logger.LogInformation("Received Message: {Text}", context.Message.Payload == null ? "" : context.Message.Payload.ToString());
    TaskRunner.CommandsFromServer(context.Message);

    return Task.CompletedTask;
}

}

发布时:

            var endpoint = await _bus.GetSendEndpoint(new Uri($"rabbitmq://{ServerAddress}/{SendQueue}"));
            await endpoint.Send(agentMessage, stoppingToken);

非常简单......

c# masstransit
1个回答
0
投票

好吧,我不想重复你在其他地方听到的内容,但这是你的事情。

CONTAINER ID   NAME                CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS
09155c5ce2d1   outbox-postgres-1   0.12%     75.51MiB / 47.06GiB   0.16%     95.8kB / 107kB    47.3MB / 47.5MB   8
6ad4b6151e35   outbox-rabbitmq-1   0.51%     149.1MiB / 47.06GiB   0.31%     10.9kB / 8.23kB   57.3MB / 778kB    46
317dc978e517   outbox-api-1        0.55%     89.48MiB / 47.06GiB   0.19%     96.3kB / 89.8kB   34.9MB / 0B       29
8dda648a87ad   outbox-jaeger-1     0.05%     10.66MiB / 47.06GiB   0.02%     1.47kB / 0B       29.7MB / 0B       16
f01392265691   outbox-service-1    0.00%     67.85MiB / 47.06GiB   0.14%     21.8kB / 14.1kB   62.1MB / 0B       16

outbox-api
outbox-service
都在使用大量端点针对 RabbitMQ 运行 MassTransit。如您所见,几乎闲置。

这是来自 Sample-Outbox 项目。

© www.soinside.com 2019 - 2024. All rights reserved.