Ограничить использование процессора веб-сервером Python Bottle

Я использую Python + Bottle в качестве веб-сервера.

Поскольку я использую производственный сервер для многих других веб-сайтов, я не хочу, чтобы Python + Bottle потреблял, например, 70% ЦП.

Как можно ограничить использование процессора веб-сервером Python Bottle?

Я думал об использовании resource.setrlimit, но это хороший способ сделать это?

С каким синтаксисом мы должны использовать resource.setrlimit установить лимит в 20% от процессора, например?

1 ответ

Шаг 1

Вы должны спросить себя, действительно ли необходима оптимизация ресурсов. Если вы уверены, что конкретное приложение потребляет слишком много ресурсов, чем могло бы или должно быть, перейдите к шагу 2.

Шаг 2

Когда ваше приложение потребляет слишком много ресурсов, первое, что вы должны сделать, это попытаться определить узкие места в нем и посмотреть, можно ли их оптимизировать. В Python есть различные инструменты, которые могут вам помочь (профилировщики кода, PyPy и т. Д.). Если вы ничего не можете сделать в этом отношении, перейдите к шагу 3.

Шаг 3

Если вам абсолютно необходимо ограничить ресурсы процесса, имейте в виду, что:

  • ОС имеет очень сложные механизмы планирования, которые делают все возможное, чтобы каждый выполняемый процесс получал достаточную долю процессорного времени. Даже при перегрузке процессора все будет работать нормально (до некоторой степени).

  • если вы намеренно ограничиваете время CPU одного из ваших процессов, он может реагировать медленно или вообще не реагировать из-за таймаутов сети.

Мой ответ на этот вопрос - уменьшите статический приоритет вашего сервера, если вы думаете, что он может лишить других услуг доступа, но тогда ваш сервер может страдать от истощения при перегрузке процессоров. С помощью nice Утилита будет моим выбором, так как она не засоряет ваш код.

Другие вопросы по тегам