использование процессора flup / fastcgi в условиях холостого хода - PullRequest
1 голос
/ 06 октября 2009

Я использую Django как fastcgi с резьбой через flup, обслуживаемый lighttpd, общение через сокеты.

Какова ожидаемая загрузка ЦП для каждого потока fastcgi без нагрузки? При запуске каждый поток некоторое время работает с 3-4% -ной загрузкой процессора, а затем в течение нескольких часов снижается до 0,5%. Он не опускается ниже этого уровня.

Это нормальное использование процессора? Есть ли в моем коде какая-то ошибка, из-за которой цикл ожидания требует больше обработки, чем должен? Я ожидал, что процесс не будет использовать измеримый процессор, когда он полностью простаивает.

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

Ответы [ 2 ]

2 голосов
/ 07 октября 2009

Я смотрел на это на django, который работает как fastcgi на Slicehost (django 1.1, python 2.6) и Dreamhost (django 1.0, python 2.5), и я могу сказать следующее:

Выполнение команды top показывает, что процессы используют большое количество ЦП для запуска в течение ~ 2-3 секунд, а затем почти сразу опускаются до 0.

Запуск команды ps aux после запуска приложения django показывает нечто похожее на то, что вы описываете, однако это на самом деле вводит в заблуждение. Из справочных страниц по Ubuntu для PS:

Загрузка ЦП в настоящее время выражается как процент времени, потраченного на бег в течение всей жизни процесс. Это не идеально, и это не соответствует стандартам, которые в противном случае соответствует. Использование процессора вряд ли сложится ровно на 100%.

По сути, столбец% CPU, показанный ps, на самом деле является средним за время, в течение которого выполнялся процесс. Вы видите, что затухание происходит из-за высокого начального пика, за которым следует усреднение по времени бездействия.

0 голосов
/ 06 октября 2009

Ваши потоки fast-cgi не должны использовать (заметный) процессор, если нет запросов на обработку.

Вы должны исследовать нагрузку, которую вы описываете. Я использую ту же архитектуру, и мои потоки полностью простаивают.

...