Comments 8
Логи писать надо в логгер, а его уже настроить, чтобы писал в консоль или куда нам удобней. Прибивать код к выводу в консоль плохая идея.
Не знаю где писали про WCF как решение для высоконагруженных систем, но это точно не так.
Очень высокие накладные расходы, посему гораздо выгодней передавать один массив с 1000 элементов чем сделать 1000 запросов.
В современном мире гораздо лучше взять gRPC через именованные каналы или unix файлы чем бороться с проблемами WCF, а их больше чем кажется.
К примеру нельзя передавать строку которая не может быть конвертирована в валидную UTF-8 строку.
Если все listener-ы, которые вы используете потокобезопасные, добавьте к себе в app.config:
У нас работает много лет и трафик там иногда тысячи событий в секунду на машинах с десятками ядер.
Это если вам надо проблему решить, а не архитектурно что-то менять =)
<system.diagnostics>
<trace useGlobalLock="false" />
</system.diagnostics>
У нас работает много лет и трафик там иногда тысячи событий в секунду на машинах с десятками ядер.
Это если вам надо проблему решить, а не архитектурно что-то менять =)
Интересно, а почему эта проблема проявилась только у одного конкретного пользователя?
Проблема бы не возникла, если бы все потоки получали доступ к заблокированной секции в том порядке, в котором запрашивали доступ. Но это не так для примитивов синхронизации 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
Видимо, только с ростом числа потоков возникает ситуация, когда один из потоков никогда не получает доступ, пока очередь не пустая.
Давайте зайдем на ReferenceSource и посмотрим исходный код метода TraceEvent.Ссылка ведёт на главную, а не на интересующий нас класс.
WCF уже пора на покой…
ох я тоже в свое время напарывался на это. если я правильно помню, у нас было сконфигурироание логирование в файл (это можно сделать в конфиге), и получалось что приложение из-за этого станавилось практически одно поточным, так как все потоки ждали лока под которым писалось в файл.
вообще МС рекомендует этот механизм для высокопроизводительного трейсинга, странно было получить такое «оправдание» от них.
вообще МС рекомендует этот механизм для высокопроизводительного трейсинга, странно было получить такое «оправдание» от них.
Sign up to leave a comment.
Как WCF сам себе в ногу стреляет посредством TraceSource