Получает ли приемник Serilog.Sinks.Console какие-либо преимущества от переноса в приемник Serilog.Sinks.Async? - PullRequest
0 голосов
/ 26 декабря 2018

Я использую Serilog внутри моего основного приложения aspnet для регистрации.И мне нужно записывать события журнала на консоль довольно часто (300-500 событий в секунду).Я запускаю свое приложение в Docker-контейнере и получаю журналы консоли, используя инструменты оркестратора.

Итак, мой вопрос: должен ли я использовать Async обертку для моей Console раковины, и получу ли я какие-либо преимущества от этого?Я прочитал документацию (https://github.com/serilog/serilog-sinks-async),, но не могу понять, актуально ли это для Console раковины или нет.

1 Ответ

0 голосов
/ 26 декабря 2018

Мойка Async берет уже захваченные элементы LogEvent и переносит их в один фоновый процессор из нескольких потоков переднего плана, используя коллекцию ConcurrentQueue Producer / Consumer.В общем, это хорошая вещь для стабильной пропускной способности esp с такой пропускной способностью событий.

Также при отправке в> 1 приемник, переход к фоновому потоку, который будет планироваться по мере необходимости, фокусируясь на этой рабочей нагрузке (т. Е. Пути распространениядля приемников, находящихся в кеше) может быть полезно, если у вас достаточно ядер и / или блок Sinks даже на мгновение.

Сказав это, основывать что-либо из этой информации - преждевременная оптимизация.


Консольные приемники и их способность эффективно принимать данные без блокировки, если вы не ставите Async впереди, всегда много зависит - например, в средах хостинга обычно синтезируется stdout, который эффективно буферизует.Когда это работает хорошо, добавление Async перед приемником консоли просто продлит срок службы объекта без особой выгоды по сравнению с разрешением каждому потоку напрямую отправлять приемник консоли.


Таким образом, это зависит- IME, передающий все в Async и выполняющий там всю обработку (например, запись в буферизованный файл, отправка каждого .5s (возможно, в коляску, которая пересылается в ваше хранилище журналов)), может работать хорошо.Суть в том, что хорошая установка генератора нагрузки - очень полезная вещь для любого приложения с высокой пропускной способностью.Если у вас есть такой, вы можете поэкспериментировать - я видел 30% прироста пропускной способности от реорганизации точно такого же выхода и того, как это запланировано (по общему признанию, я также переключился на Serilog во время этого перехода - вы вряд ли увидите что-либо в этом порядке).

...