Ограничить использование процессора веб-сервером Python Bottle
Я использую Python + Bottle в качестве веб-сервера.
Поскольку я использую производственный сервер для многих других веб-сайтов, я не хочу, чтобы Python + Bottle потреблял, например, 70% ЦП.
Как можно ограничить использование процессора веб-сервером Python Bottle?
Я думал об использовании resource.setrlimit, но это хороший способ сделать это?
С каким синтаксисом мы должны использовать resource.setrlimit
установить лимит в 20% от процессора, например?
1 ответ
Шаг 1
Вы должны спросить себя, действительно ли необходима оптимизация ресурсов. Если вы уверены, что конкретное приложение потребляет слишком много ресурсов, чем могло бы или должно быть, перейдите к шагу 2.
Шаг 2
Когда ваше приложение потребляет слишком много ресурсов, первое, что вы должны сделать, это попытаться определить узкие места в нем и посмотреть, можно ли их оптимизировать. В Python есть различные инструменты, которые могут вам помочь (профилировщики кода, PyPy и т. Д.). Если вы ничего не можете сделать в этом отношении, перейдите к шагу 3.
Шаг 3
Если вам абсолютно необходимо ограничить ресурсы процесса, имейте в виду, что:
ОС имеет очень сложные механизмы планирования, которые делают все возможное, чтобы каждый выполняемый процесс получал достаточную долю процессорного времени. Даже при перегрузке процессора все будет работать нормально (до некоторой степени).
если вы намеренно ограничиваете время CPU одного из ваших процессов, он может реагировать медленно или вообще не реагировать из-за таймаутов сети.
Мой ответ на этот вопрос - уменьшите статический приоритет вашего сервера, если вы думаете, что он может лишить других услуг доступа, но тогда ваш сервер может страдать от истощения при перегрузке процессоров. С помощью nice
Утилита будет моим выбором, так как она не засоряет ваш код.