Intereting Posts

Как получить меньшее разрешение нагрузки в среднем (<1 минута)

Я пытаюсь создать службу, которая блокирует другие запросы, если сервер перегружен. Но средняя нагрузка 1 минута недостаточно для этого, логика примерно такая:

if load_average > core_count return render 503 end return the_requested_page 

но когда я пытаюсь подчеркнуть компьютер, используя команду stress -c 12 -i 100 --timeout 10 , load_average показывает что-то вроде этого:

 1, 3, 8, 15, 21, 20, 18, 15, 12, 11 ^ stress program ends here 

как получить среднюю нагрузку с меньшим разрешением (1-2 секунды, а не 1 минута в среднем)?

Дополнительная информация, я прочитал среднюю нагрузку, используя этот код

Среднее значение нагрузки вычисляется в ядре – см. Почему не простая скользящая средняя 1/5/15 минут, используемая при вычислении нагрузки Linux? для деталей. Таким образом, вы не можете просто получить чтение с более тонким разрешением. Вместо этого вы можете написать код пользовательского пространства, который дублирует функциональные возможности, но это кажется немного сложным (не в последнюю очередь потому, что для этого нужно сделать выборку, что кажется глупым накладным ресурсом на перегруженном сервере).

Вместо этого я бы предложил выбрать что-то другое, кроме среднего значения нагрузки, чтобы основывать ваше решение – возможно, что-то, что вы знаете из самого сервиса. Например, как насчет отступления, если время ответа превышает средний порог?