Добавьте бюджет одновременной памяти
Начинайте с процессов, которые перекрываются, а не с их тихих средних. Иллюстративный рабочий лист на 4 GB мог бы зарезервировать 700 MiB для инструментов хоста, 900 MiB для процессов API, 1,200 MiB для базы данных, 500 MiB для одного воркера и 700 MiB на неопределённость: всего 4,000 MiB. Это почти исчерпывает номинальный профиль и оставляет мало уверенности для большего перекрытия релизов.
Оцените потребность в CPU по измеренной работе
Измерьте время CPU для одного репрезентативного запроса или задачи, затем умножьте на пиковую частоту завершения. Например, 25 мс времени CPU × 20 запросов в секунду = 500 мс CPU каждую секунду, или в среднем 0.5 ядра. Повторите с активным реалистичным воркером и проверьте пики; средние скрывают всплески, планирование и ожидания базы данных.
Разделите сигналы ограничений
| Наблюдаемый сигнал | Вероятная следующая проверка |
|---|---|
| Высокий CPU при готовой к выполнению работе | Профилируйте горячий путь, затем сравните с большим CPU. |
| Давление на память или завершение процесса | Уменьшите перекрытие или добавьте измеренное ОЗУ. |
| Низкий CPU при медленных запросах | Проверьте базу данных, пул и внешние ожидания. |
| Возраст очереди растёт с увеличением числа воркеров | Снизьте параллелизм и проверьте общую зависимость. |
Примите решение о ресурсах
Выбирайте больше CPU только тогда, когда профилирование показывает устойчивую конкуренцию за вычисления. Выбирайте больше ОЗУ, когда одновременному рабочему набору не хватает запаса. Снижайте параллелизм, когда параллельная работа вредит задержке API или полезной частоте завершения. Запишите вызвавшее это измерение, затем повторите ту же нагрузку, изменив одну переменную.