Мы находимся в процессе развертывания нового приложения в его реальной среде.
На серверах приложений запущено приложение .NET, размещенное на IIS, которое использует EntityFramework и выполняет многочисленные вызовы к приложению COM+, отличному от .NET.
Мы смогли повлиять на производительность чистого кода .NET, изменив количество максимальных рабочих процессов внутри пула приложений IIS, но у меня вопрос: как количество рабочих процессов соотносится с размером пула пулов приложений в службах компонентов? Например:
- должны ли мы стремиться к соотношению 1 к 1 между этими двумя значениями?
- следует ли избегать использования нескольких рабочих потоков?
Любая информация будет принята с благодарностью...
решение1
Количество рабочих процессов в двух пулах напрямую не связано. Вам нужно установить время ожидания в каждом пуле. Таким образом, если рабочие процессы IIS заняты и только небольшая часть общего времени тратится на приложение COM, то потоки COM вряд ли станут узким местом производительности.
Попробуйте измерить количество активных потоков в стрессовой ситуации, чтобы определить, как контролировать размеры отдельных пулов.
Учтите также, что рабочие процессы IIS также повторно используются по критериям, отличным от использования процессора. Это может существенно повлиять на вашу способность делиться данными между вызовами и может подорвать попытки сильно повлиять на прямую производительность.
Лучше сократить расходы на создание моста .NET-COM, рассмотрев тонкую оболочку COM, которая может объединять несколько запросов из одного запроса .NET. Это также может иметь побочный эффект в виде объединения нескольких методов COM в один поток из пула.