Мы обнаружили, что несколько запросов с интенсивным использованием ЦП означают, что наш сервер API больше не отвечает на простые запросы. Сервер API - это базовое приложение. net с пустельгой, которое выполняется в кластере Kubernetes. Однако, если приложение работает на хосте Windows или Linux, приоритезация задач, похоже, работает идеально. Служба отвечает, даже если есть десятки запросов с интенсивной загрузкой процессора. Таким образом, кажется, существует значительная разница между средой Docker и средой хоста.
Я использую этот метод API для целей тестирования:
public void SimulateHighCpuLoad()
{
var previousPriority = Thread.CurrentThread.Priority;
try
{
Thread.CurrentThread.Priority = ThreadPriority.Lowest;
var until = DateTime.Now.AddSeconds(30);
var num = 0L;
var random = new Random();
// do senseless work for 30 seconds
while (DateTime.Now < until)
{
num = (random.Next() + Environment.TickCount + num) % (random.Next(10000) + 1);
num *= num++;
}
}
finally
{
Thread.CurrentThread.Priority = previousPriority;
}
}
Моя цель состоит в том, чтобы отдать приоритет интенсивному использованию ЦП методы ниже, чтобы приложение всегда могло отвечать на другие запросы (например, запросы работоспособности для LivenessProbe). Thread.Priority кажется полностью игнорируемым в docker enviroment