Async Execution: исследование прерывистой задержки между двумя операторами журналаC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Async Execution: исследование прерывистой задержки между двумя операторами журнала

Сообщение Anonymous »

приложение: < /strong>
У нас есть многопоточная библиотека, подготовленная с NetStandard2.0, используя язык программирования C#. < /p>
Дополнительная информация (обновление ):
эта библиотека потребляется несколькими процессами в одно и то же время. Например; У нас может быть 40 инструментов, и каждый инструмент будет выполнен в той же физической или виртуальной машине и использовал эту библиотеку. /p>
Описание проблемы: < /strong>
Я испытываю прерывистую проблему блокировки при выполнении следующего блока кода в моей библиотеке. В нормальных условиях выполнение заканчивается в одних и тех же миллисекундах, но иногда существует задержка (наконец -то 45 с) между двумя операторами логарифма. Я хочу понять, что может привести к этой задержке.

Код: Выделить всё

public class ToolCheckLayer
{
private async Task CheckAsync(CancellationToken cancellationToken)
{
Logger?.Info("KeepAlive is working...");
using (var messageListener = await _bus.CreateListenerAsync(cancellationToken)
.ConfigureAwait(false))
{
// Some operations
return true;
}
return false;
}
}

фрагмент кода: [/b]
Вот соответствующий код, связанный с созданием прослушивателя шины:

Код: Выделить всё

public class MessageBus
{
private readonly ILogger _logger;
private readonly SemaphoreSlim _listenerSemaphore;

public class MessageBusListener : IDisposable
{
private readonly ILogger _logger;
private readonly bool _privileged;
private readonly BufferBlock _queue;

public MessageBusListener(ILogger logger, bool privileged,
Action disposeAction)
{
_logger = logger;
_priviledged = privileged;
_queue = new BufferBlock();
}

// Some Functions...
}

public MessageBus(ILogger logger, int maxConcurrentListeners)
{
_logger = logger;
_listenerSemaphore = new SemaphoreSlim(maxConcurrentListeners);
}

public async Task CreateListenerAsync(
CancellationToken cancellationToken)
{
_logger?.Debug("Creating listener...");
await _listenerSemaphore.WaitAsync(cancellationToken);

var listener = new MessageBusListener(_logger, privileged: false, () =>
{
_listenerSemaphore.Release();
});

// Operations

return listener;
}
}

Расследования на данный момент:
Проблема не возникает постоянно; это происходит случайным образом через несколько недель или месяцев бесперебойной работы.
В период блокировки не наблюдалось никаких узких мест в процессоре, памяти или вводе-выводе.
Последние результаты ( Обновление-2)
Tool 1
10:20:16.4951|INFO|ToolCheckLayer [1]: KeepAlive is working...
--- Here: ~45 seconds blocking sometimes less... ----------->
10:21:00.0168|DEBUG|MessageBus [1]: Creating listener...

Tool 2
10:20:15.2180|INFO|ToolCheckLayer [1]: KeepAlive is working...
--- Here: ~45 seconds blocking sometimes less... ----------->
10:21:00.0171|DEBUG|MessageBus [1]: Creating listener...

Tool 3
2025-01-23 10:20:16.4638|INFO|ToolCheckLayer [1]: KeepAlive is working...
--- Here: ~45 seconds blocking sometimes less... ----------->
2025-01-23 10:21:00.0144|DEBUG|MessageBus [1]: Creating listener...
...
< /code>
Мы снова столкнулись с проблемой на 24 инструментах, но на этот раз продолжительность блокировки довольно длинная. В соответствии с временными метками журнала, CreateListenerEnerasync () для каждого инструмента блокируется до определенного времени. (10: 21: 00.01xx) тогда все блоки бесплатны. Данные не было получено для повышения подозрений.
Использование ЦП %3, память %40 и т. Д. < /p>
Большое спасибо всем, кто внес свой вклад.>

Подробнее здесь: https://stackoverflow.com/questions/793 ... statements
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Можно ли использовать Async Async's Async's 2,0+ от Flask Wih Flask?
    Anonymous » » в форуме Python
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Std :: execution vs std :: async
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Asyncmock возвращает пустой список при издевательстве Sqlalchemy Async Execution в Fastapi
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Scipy-correlate: как изменить задержки точек данных на временные задержки?
    Anonymous » » в форуме Python
    0 Ответы
    157 Просмотры
    Последнее сообщение Anonymous
  • Как заполнить сгенерированную php таблицу html двумя (или более) операторами выбора Mysql
    Гость » » в форуме Php
    0 Ответы
    34 Просмотры
    Последнее сообщение Гость

Вернуться в «C#»