Комментарии 8
Логи писать надо в логгер, а его уже настроить, чтобы писал в консоль или куда нам удобней. Прибивать код к выводу в консоль плохая идея.
Не знаю где писали про WCF как решение для высоконагруженных систем, но это точно не так.
Очень высокие накладные расходы, посему гораздо выгодней передавать один массив с 1000 элементов чем сделать 1000 запросов.
В современном мире гораздо лучше взять gRPC через именованные каналы или unix файлы чем бороться с проблемами WCF, а их больше чем кажется.
К примеру нельзя передавать строку которая не может быть конвертирована в валидную UTF-8 строку.
+3
Если все listener-ы, которые вы используете потокобезопасные, добавьте к себе в app.config:
У нас работает много лет и трафик там иногда тысячи событий в секунду на машинах с десятками ядер.
Это если вам надо проблему решить, а не архитектурно что-то менять =)
<system.diagnostics>
<trace useGlobalLock="false" />
</system.diagnostics>
У нас работает много лет и трафик там иногда тысячи событий в секунду на машинах с десятками ядер.
Это если вам надо проблему решить, а не архитектурно что-то менять =)
+5
Интересно, а почему эта проблема проявилась только у одного конкретного пользователя?
0
Проблема бы не возникла, если бы все потоки получали доступ к заблокированной секции в том порядке, в котором запрашивали доступ. Но это не так для примитивов синхронизации Windows
Видимо, только с ростом числа потоков возникает ситуация, когда один из потоков никогда не получает доступ, пока очередь не пустая.
Скрытый текст
If more than one thread is waiting on a mutex, a waiting thread is selected. Do not assume a first-in, first-out (FIFO) order
Видимо, только с ростом числа потоков возникает ситуация, когда один из потоков никогда не получает доступ, пока очередь не пустая.
+1
Давайте зайдем на ReferenceSource и посмотрим исходный код метода TraceEvent.Ссылка ведёт на главную, а не на интересующий нас класс.
+1
WCF уже пора на покой…
+2
ох я тоже в свое время напарывался на это. если я правильно помню, у нас было сконфигурироание логирование в файл (это можно сделать в конфиге), и получалось что приложение из-за этого станавилось практически одно поточным, так как все потоки ждали лока под которым писалось в файл.
вообще МС рекомендует этот механизм для высокопроизводительного трейсинга, странно было получить такое «оправдание» от них.
вообще МС рекомендует этот механизм для высокопроизводительного трейсинга, странно было получить такое «оправдание» от них.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как WCF сам себе в ногу стреляет посредством TraceSource