Мы столкнулись с интересной загадкой, и я был бы признателен за помощь в устранении неполадок. У нас есть сервис, в котором есть несколько процессов. Для распределения нагрузки мы можем запускать n-процессы большинства типов. Так, например, если мы ожидаем 200 000 подключений и знаем, что каждый из определенных типов процессов может обрабатывать около 5 000 подключений, прежде чем задействовать 100% ЦП, мы знаем, что у нас должно быть как минимум 40 таких типов процессов, работающих для обработки нагрузки.
Недавно мы начали объединять наши сервисы, чтобы лучше использовать наше оборудование. Однако во время нагрузочного тестирования мы увидели, что изменение ничего, кроме того, сколько процессов определенного типа находится в одном блоке, удваивает процент процессора каждого процесса.
Вот скриншот процесса CPU%:
Вот скриншот% центрального процессора:
В предыдущем тесте было около 12 экземпляров этого процесса; тест позже удвоил счет. Я бы сказал, что это имело бы смысл, если бы ящик просто не выдерживал нагрузки, но, насколько я понимаю, это не похоже на корпус.
top - 14:55:08 up 54 days, 18:30, 1 user, load average: 22.26, 22.39, 22.03
Tasks: 581 total, 1 running, 580 sleeping, 0 stopped, 0 zombie
%Cpu(s): 32.8 us, 3.1 sy, 0.0 ni, 62.3 id, 0.0 wa, 0.0 hi, 1.7 si, 0.0 st
KiB Mem : 26385841+total, 16612808+free, 20537016 used, 77193320 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 24167782+avail Mem
Средняя нагрузка в пределах допустимого диапазона (это 28-ядерный сервер, 256 ГБ памяти). Дисковый ввод-вывод имеет wa
из 0.0
. Я не уверен, что вызывает увеличение% ЦП. Есть идеи, что еще искать? Почему удвоение количества процессов также удваивает количество процессорного времени, необходимого для каждого процесса, если процессор (согласно верхнему) фактически под используется?