У меня есть служба WCF net.tcp, размещенная с встроенным ServiceHost, и при выполнении стресс-тестов я получаю странное поведение. В первый раз, когда я отправляю кучу запросов, от 5 до 10 запросов отвечают быстро, а остальные возвращаются с интервалом в 2 секунды. Во второй раз, когда я отправляю запросы, 10-20 возвращаются быстро и отдыхают с двумя интервалами sencond.Производительность WCF с net.tcp
Вышеупомянутый повторяет, пока я не смогу получить более 100 запросов, которые будут возвращены быстро, но если я подожду минутку, то использование памяти службы снижается, а запросы возвращаются к 5-10, быстро возвращающимся.
Служба, которую я тестирую, имеет небольшую задержку, так что я могу получить много открытых подключений одновременно, если эта задержка удалена, запросы возвращаются так быстро, что у меня есть, возможно, 2-5 соединений, открытых одновременно , Эта задержка заключается в моделировании соединений БД и других исходящих материалов.
Из-за поведения это выглядит так, как ServiceHost выделяет что-то, потоки, экземпляры классов, но я не могу понять, что это такое.
У меня может быть таймер в клиенте, который вызывает службу, чтобы она работала, но это похоже на плохое решение.
Если у меня высокая длительная нагрузка на услугу, она быстро перевернет все запросы, но если у меня будет период низкой активности, а затем произойдет всплеск соединений, обслуживание будет медленным.
Я предполагаю, что мой вопрос: ЧТО это получить при высокой загрузке службы WCF, и КАК Я могу настроить службу для выделения большего количества вещей, которые распределяются.
EDIT: Я проверил еще несколько тестов и посмотрел на taskmgr для процесса. Я вижу, что, когда servicehost «отдыхает», открыто 10 потоков, но когда я начинаю отправлять запросы, уровень thread увеличивается. Пока длина потока высока, servicehost может быстро обрабатывать входящие запросы, но если я приостанавливаю отправку запросов, то open threadcount уменьшается, а последующие запросы начинают занимать больше времени для обработки.
Теперь, как я могу сказать servicehost, чтобы сохранить кучу потоков открытыми? Или больше, чем 10-12, которые он сохраняет по умолчанию?
Спасибо, я проверил сайт, и настройки уже есть в моем файле конфигурации, с высокими пределами, так высоко, что я должен быть в состоянии обрабатывать все входящие соединения на один раз вместо первой 5-10, а затем один за 2 секунды. – Kim