About |

All articles, tagged with “nginx”

Сравнение производительности Nginx и Lighttpd

Сделали ради интереса небольшой тест производительности двух легких и быстрых вебсерверов (nginx и lighttpd).

Результаты

Результаты по скорости примерно одинаковы. На конфиге по умолчанию лайти немного проигрывал nginx’у и на больших и на маленьких файлах. После отключения лишних модулей и добавления пары опций (см. конфиг вверху страницы) лайти на небольших файлах начал выигрывать.

Пример работы программы ab -c 10 -n 100000 http://127.0.0.1/test_ind.html -

nginx маленький html файл выдал 28488.55 запросов в секунду.

А лайти, — lighttpd маленький html файл выдал 29411.67 запросов в секунду.

После проведения серии тестов (каждый тест мы запускали 3 раза и брали среднее арифметическое значение), были получены следующие результаты:

Как видно из таблицы nginx немного выигрывает на больших файлах а лайти на маленьких. ИМХО, разница в скорости совершенно несущественна. Поэтому выбор веб-сервера для статики (или проксирования) следует делать из других соображений. Мы используем оба веб-сервера и особых нареканий нет ни к тому ни к другому. К плюсам nginx стоит отнести более активную разработку и немного меньшую нагрузку на процессор при проведении тестов.

 continue reading

Деплоинг Django приложения на Nginx или разворачивание связки Nginx+uWsgi

Итак, начнем:

нам понадобится установленный пакет virtualenv

virtualenv $DOC_ROOT
cd $DOC_ROOT/bin
./easy_install django
cp /var/www/wsgi_app.py $DOC_ROOT/$pypath/
nano /$DOC_ROOT/$pypath/wsgi_app.py #edit PATH_PROJECT to fit your needs

wsgi_app.py listing:

import os, sys                                                                                                                                        
PATH_BASE = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
PATH_PROJECT = os.path.join(PATH_BASE, 'pyprojectname')
activate_this = os.path.join(PATH_BASE, 'bin/activate_this.py')
execfile(activate_this, dict(__file__=activate_this))

sys.path.append(PATH_PROJECT)
sys.path.append(PATH_BASE)

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

nginx sample config:

server {                                                                                                                                              
listen 80;
server_name sitename.name www.sitename.name;
location / {
uwsgi_pass unix:///var/run/uwsgi.socket;
include uwsgi_params;
uwsgi_param UWSGI_CHDIR /var/www/sitename.name/pypath;
uwsgi_param UWSGI_PYHOME /var/www/sitename.name/;
uwsgi_param UWSGI_SCRIPT wsgi_app;
}
location ~* \.(jpg|gif|png|css|js|swf)$ {
root /var/www/sitename.name/pypath/media/;
}
}