ограничить CPU для обработки реквеста
От: MadHuman Россия  
Дата: 27.03.19 08:05
Оценка:
Всем доброго!
Есть asp.net приложение под IIS, бывает так что реквест работает чрезмерно долго, и как следствие на долго отжирает камень и тем самым уменьшает производительность системы.
Хочется следующего — спустя некоторый лимит времени, понижать скорость работы потока обрабатывающего такой реквест (вроде это тротлинг).
Какие вижу варианты:
1. где-то, через что часто проходит выполнение вставить вызов типа CheckExecuting, в котором и сработает логика тротлинга (делается sleep).
Такое уже успешно используется, но минус в том что иногда работа может уйти вглубь чего-то откуда не сделать вызовы CheckExecuting.
Поэтому надо ещё варианты.

2. Сделать внешний контроллер, в нём при начале обработки реквеста фиксируется в каком потоке это происходит и этот контроллер спустя лимит
выставит выполняющему реквест потоку пониженный приоритет. в нашем случае обработка вся синхронная, поэтому проблем из-за асинхронности небудет.
и в конце обработки, вернёт нормальный приоритет, так как поток из пула, чтоб затем в нормальном режиме обрабатывал другие реквесты.
Коллеги, это нормальный вариант? Видит ли кто в нём какие-то грабли? Или может есть ещё варианты?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.