Как настроить IIS 10 для выполнения только одного потока на рабочий процесс?
Привет,
У меня есть сторонняя dll, которая вызывается из некоторых моих служб WCF, сидя на iis 10.
Эта DLL используется в статических переменных. Так что при работе с многопоточностью память дробится.
(один поток переопределяет память другого потока).
Я не хочу использовать блокировку в своем коде из-за производительности.
Я хочу настроить IIS таким образом, чтобы каждый пул приложений выполнял несколько рабочих процессов
и каждый процесс будет выполнять только один thred.
Это позволит избежать переопределения памяти, потому что каждый процесс имеет свою собственную память.
Что я уже пробовал:
Я попытался изменить параметр "Thread Per Processor Limit" в
IIS => ASP => ограниченные свойства , от 25 до 1.
Я также увеличиваю параметр "максимальные рабочие процессы" в
IIS => пул приложений => мое приложение => модель процесса, от 1 до 25.
Но на самом деле,
В диспетчере задач есть 25 w3wp.exe процесс, но в колонке "thred", я вижу
около 40 потоков для каждого процесса.
Если у кого-то есть объяснение для меня, я буду благодарен.
Спасибо.
F-ES Sitecore
Статические переменные являются общими для домена приложения, а не для потока. Если предположить, что объект выполняет все за одну операцию и вам не нужно, чтобы он поддерживал состояние в течение определенного периода времени, то использование блокировки для обеспечения того, чтобы только один поток одновременно вызывал код, вероятно, является единственным решением. Это плохо сказывается на производительности, но вы используете библиотеку dll, которая явно не предназначалась для использования в многопоточной среде.
Member 13587927
Привет,
Так что же означает параметр "Thread Per Processor Limit"?
спасибо большое.