Мойка Async
берет уже захваченные элементы LogEvent
и переносит их в один фоновый процессор из нескольких потоков переднего плана, используя коллекцию ConcurrentQueue
Producer / Consumer.В общем, это хорошая вещь для стабильной пропускной способности esp с такой пропускной способностью событий.
Также при отправке в> 1 приемник, переход к фоновому потоку, который будет планироваться по мере необходимости, фокусируясь на этой рабочей нагрузке (т. Е. Пути распространениядля приемников, находящихся в кеше) может быть полезно, если у вас достаточно ядер и / или блок Sinks даже на мгновение.
Сказав это, основывать что-либо из этой информации - преждевременная оптимизация.
Консольные приемники и их способность эффективно принимать данные без блокировки, если вы не ставите Async
впереди, всегда много зависит - например, в средах хостинга обычно синтезируется stdout
, который эффективно буферизует.Когда это работает хорошо, добавление Async
перед приемником консоли просто продлит срок службы объекта без особой выгоды по сравнению с разрешением каждому потоку напрямую отправлять приемник консоли.
Таким образом, это зависит- IME, передающий все в Async
и выполняющий там всю обработку (например, запись в буферизованный файл, отправка каждого .5s
(возможно, в коляску, которая пересылается в ваше хранилище журналов)), может работать хорошо.Суть в том, что хорошая установка генератора нагрузки - очень полезная вещь для любого приложения с высокой пропускной способностью.Если у вас есть такой, вы можете поэкспериментировать - я видел 30% прироста пропускной способности от реорганизации точно такого же выхода и того, как это запланировано (по общему признанию, я также переключился на Serilog во время этого перехода - вы вряд ли увидите что-либо в этом порядке).