342000 событий журнала за 30 минут, если я правильно сделал математику, получается 190 событий журнала в секунду.Я думаю, что ваша проблема может быть связана с настройками регулирования по умолчанию в WCF.Даже если ваш метод настроен в одностороннем порядке, в зависимости от того, создаете ли вы новый прокси-сервер для каждого зарегистрированного события, вызов метода все равно будет блокироваться, пока создается прокси, канал открывается, и если вы используетеПривязка на основе HTTP блокируется до тех пор, пока служба не получит сообщение (привязка на основе HTTP отправляет ответ null для одностороннего вызова метода при получении сообщения).Дросселирование WCF по умолчанию ограничивает число одновременных экземпляров до 10 на стороне службы, что означает, что за один раз будут обрабатываться только 10 запросов, и любые дальнейшие запросы будут поставлены в очередь, так что соедините это с привязкой HTTP, и все, что после первых 10 запросовбудет блокировать клиент, пока не будет обработан один из 10 запросов.Не зная, как настроены ваши сервисы (режим экземпляра и т. Д.), Сложно сказать больше, но если вы используете инстансинг для каждого вызова, я бы рекомендовал установить MaxConcurrentCalls
и MaxConcurrentInstances
на вашем ServiceBehavior
.к чему-то гораздо более высокому (значения по умолчанию равны 16 и 10 соответственно).
Кроме того, чтобы опираться на то, что другие упоминали об объединении нескольких событий и их одновременной отправке, я нашел полезным настроитьстатический Logger.LogEvent(eventData)
метод.Таким образом, его легко использовать во всем коде, и вы можете в своем методе LogEvent
контролировать, как ведется ведение журналов во всем приложении, например настраивать, сколько событий следует отправлять за раз.