Запустил каталист через FastCGI
Удалось запустить подопытный сайт через nginx+FastCGI. Предварительно пришлось поставить p5-FastCGI-ProcManager, который почему-то не был автоматически поставлен при установке каталиста и обновить libtool, без которого FastCGI::ProcManager не желал ставиться.
Наблюдается интересная картина: производительность, судя по результатам работы ab, в 2–2,5 раза хуже, чем при использовании Apache+mod_perl (но во столько же лучше, чем у каталистового тестового сервера), однако расход памяти заметно ниже: апач на каждый процесс сразу отъедал около 60 метров памяти, процессы размножались и раздувались (до 200 метров на процесс — легко!), потребляя в сумме несколько гигабайт (стремясь сожрать всю доступную память: и физическую, и виртуальную); при использовании FastCGI всё не так: запускается всего 2 процесса со сходными аппетитами на память, один из них ничего не делает, зато другой делает, видимо, всё остальное:
Наблюдается интересная картина: производительность, судя по результатам работы ab, в 2–2,5 раза хуже, чем при использовании Apache+mod_perl (но во столько же лучше, чем у каталистового тестового сервера), однако расход памяти заметно ниже: апач на каждый процесс сразу отъедал около 60 метров памяти, процессы размножались и раздувались (до 200 метров на процесс — легко!), потребляя в сумме несколько гигабайт (стремясь сожрать всю доступную память: и физическую, и виртуальную); при использовании FastCGI всё не так: запускается всего 2 процесса со сходными аппетитами на память, один из них ничего не делает, зато другой делает, видимо, всё остальное:
$ topСтатичные файлы, как можно догадаться, раздаются непосредственно nginx'ом. Лёгкие файлы (например, иконка весом менее килобайта) выдаются раза в 2 быстрее, чем апачем, тяжёлые (например, prototype.js — больше 100 кБ) — примерно с одинаковой скоростью.PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 72718 as 1 125 0 57400K 49068K RUN 1 0:55 74.72% perl 72715 as 1 8 0 56896K 44720K wait 0 0:03 0.00% perl
Catalyst::Engine::HTTP::Prefork
location /myapp/ { # Or, simply "location /"
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:3000/;
}
p.s.
Статику типа css и скриптов еще можно gzip'ить.., чтобы не отдавать 100Кб prototype.js
Re: gzip
Re: gzip
gzip on;
Попробовал его закомментировать — скорость (по результатам замеров с помощью ab) не поменялась.
Раскомментировал обратно.
Re: gzip
gzip_proxied any;
gzip_types application/x-javascript text/javascript text/css;
?
Re: Catalyst::Engine::HTTP::Prefork
Сейчас тестирую с разным количеством дочерних процессов (от 5 до 50 с шагом 5). Результаты пока какие-то странные, наверное, сказывается отсутствие чистоты эксперимента.
no subject
Может если сделать количество одинаковым, то и результат будет более похожим, а не в разы?
Re: Сколько
более 70 процессов при многопоточном нагрузочном тестировании). И всего 2 —
при работе через FastCGI. Во всяком случае, команда top показывала всего 2
перла, работавших в тот момент.
А насчёт тестирования на равном числе процессов — здравая мысль. Попробую.
Re: Сколько