Отслеживание ошибок процесса Django / FastCGI - PullRequest
0 голосов
/ 18 февраля 2011

Я использую сайт на Django на Nginx с сервером FastCGI.Сайт вообще отлично работает.Но каждые 2-3 дня сайт сталкивается с неизвестной проблемой и перестает отвечать на любые запросы.

Графики Munin показывают, что количество операций чтения-записи в секунду увеличивается на 500% во время проблемы.

Iтакже написал скрипт на python для записи следующей статистики каждую минуту.

Load Averages
CPU Usage (user, nice, system, idle, iowait)
RAM Usage
Swap Usage
Number of FastCGI Processes
RAM Used by FastCGI Processes

Запись показывает, что во время задачи число процессов FastCGI удвоилось (с нормального значения от 10-15 до 25-30).И использование оперативной памяти процессами FastCGI также удвоилось (с 17% до 35% от общего объема оперативной памяти на сервере).Увеличение использования памяти потребовало большего количества подкачки, чтобы замедлить дисковый ввод-вывод, из-за чего сервер не отвечал.

Параметры FastCGI, которые я использовал:

maxspare=10 minspare=5 maxchildren=25 maxrequests=1000 

Я думаю, что проблема связана с плохо написаннымКод Python в какой-то части моего сайта.Но я просто не знаю, как узнать, какая часть кода заморозила существующие процессы FastCGI и создала новые экземпляры.

1 Ответ

1 голос
/ 18 февраля 2011

Количество дочерних элементов ограничено 25, поэтому, когда запущено 25 процессов и обрабатываются запросы, любые последующие блокируются, и сайт, кажется, не отвечает.

Мне кажется, что у вас бесконечный (или очень длинный) цикл, который вызывает процессы блокирования. Я предлагаю вам добавить время простоя в сценарий FastCGI. Мы надеемся, что это позволит продолжить работу сайта, убив долго выполняющиеся запросы, и позволит вам отладить проблему, отправив трассировки с места, где были убиты процессы.

...