Всея ПЫХА epsyl adw0rd Мавр ГО Irinax http://hell.helldude.ru - это пиздец

Тесты: Apache vs. php-fpm

Рубрики: (nginx, php, Апаче (не вертолет)) Автор: polkila 09 Дек 2008

Теги : , , ,

Что имеем: FreeBSD 7.0-STABLE на машине Duron 600MHz с памятью 512Mb (заяц). Такая слабая машина выбрана умышленно, чтобы тесты проходили заметнее, а VPS, кстати, предоставляют с похожей конфигурацией. Сеть 100Mb или даже 10Mb, не помню, да и не важно — максимальная нагрузка не превышала 700 Kbit/s.

Нагрузку создаем утилитой ApacheBench. Предварительно выключаем на волке фаервол/антивирус через msconf и перезагружаем, чтобы никто не ограничивал траффик и коннекты, а эти добрые молодцы, как выяснилось на практике, еще напрягаются сами, даже когда все прозрачно и запреты сняты.

Итак, прежде всего замечу, что конфигурация nginx (1 w., 512 c.) не влияла на результаты тестов. Увеличение количества воркеров или коннектов не давало прироста производительности. Это говорит, что nginx имеет подходящую настройку под конфигурацию машины. (Есть другое мнение, почему worker_connections нужно выставлять очень большим.) Касательно модулей, установлены были только необходимые, ничего лишнего.

PHP-скрипт выбран с таким расчетом, чтобы повторить работу какого-нибудь движка (за вычетом запросов в базу MySQL, их исключаем, чтобы не испортить результаты тестов). В индексе инклудим 5-6 классов, разбираем путь (/module/test) и инклудим еще один скрипт.

В первой схеме имеем nginx, настроенный в качестве реверс-прокси, и Apache20 + mod_php. Наверное, вы спросите, зачем здесь нужен nginx, ведь тестируем только производительность Apache20? Затем он и нужен, что в боевых условиях наш заяц будет работать только с nginx, без него при первом же скачке посещаемости Apache подавится количеством соединений и, подыхая, задушит MySQL, захватив память своими беспощадными воркерами. Здесь будет задействован mod_rewrite с одним-двумя правилами:
RewriteRule ^images/ - [NC,L]
RewriteRule .* index.php [NC,QSA]

Во второй схеме заменяем Apache20 на php-fpm. Настраиваем соединение между ним и nginx через сокет. Тут еще проще — не потребуется даже rewrite:
# Main location
location / {
  fastcgi_pass unix:/tmp/php-fpm.sock;
  fastcgi_param SCRIPT_FILENAME /home/test.dev/www/site1/public_html/index.php;
  include fastcgi_params;
}
# Static
location ~* ^.+\.(ico|gif|jpe?g|png|bmp|swf|css|js|html|xml|txt|doc|rtf|xls|pdf|tar|zip|t?gz|bz2|rar)$ {
  if ($request_uri ~* "\?[0-9]+$"){
    expires max;
  }
  root /usr/home/test.dev/www/site1/public_html;
}
location ~ /\.ht {
  deny all;
}

(Это не значит, что не нужно включать модуль rewrite, он всегда пригодится, к тому же директива if тоже обрабатывается им.)

blue — apache efficiency (requests per second)
green — php-fpm efficiency (requests per second)

Test #1: 3 workers, eAccelerator is off

req\con 1 2 3 4 5 10 25 50
1000 18.82
19.72
18.44
19.77
18.52
19.85
18.87
19.83
18.72
19.78
18.88
19.81
18.82
19.82
18.87
19.85
5000 18.61
19.14
18.87
19.80
18.82
19.86
18.87
19.87
18.83
19.84
18.85
19.85
18.85
19.93
18.86
19.91
10000 18.63
19.80
18.87
19.83
18.84
19.89
18.90
19.85
18.92
19.82
18.91
19.82
18.92
19.86
18.92
19.87

Test #2: 5 workers, eAccelerator is off

req\con 1 2 3 4 5 10 25 50
1000 18.68
19.55
18.86
19.88
18.40
19.79
18.76
19.88
18.74
19.86
18.76
19.83
18.81
19.83
18.73
19.80
5000 18.77
19.76
18.82
19.83
18.82
19.81
15.21
19.83
17.96
19.83
18.86
19.85
18.85
19.85
18.88
19.82
10000 18.85
19.74
18.90
19.84
18.84
19.84
18.80
19.81
18.82
19.82
18.85
19.82
18.84
19.81
18.84
19.79

Test #3: 3 workers, eAccelerator is on

req\con 1 2 3 4 5 10 25 50
1000 107.02
125.74
94.96
130.61
109.97
131.42
100.00
131.69
115.11
133.06
112.87
130.08
98.92
130.88
112.48
130.35
5000 106.45
123.27
111.42
129.87
113.88
133.84
114.41
133.84
113.43
134.12
113.56
129.45
112.01
130.67
112.01
131.52
10000 101.67
123.53
112.91
131.42
112.38
134.14
114.76
135.65
114.06
135.28
114.35
133.70
112.66
133.14
112.30
132.48

Test #4: 5 workers, eAccelerator is on

req\con 1 2 3 4 5 10 25 50
1000 103.73
122.14
112.28
133.61
103.23
131.96
113.07
135.02
113.07
133.61
114.49
131.96
112.87
137.63
112.28
132.51
5000 101.91
119.67
111.19
132.67
112.60
135.54
113.15
138.17
112.72
137.87
115.94
137.52
113.48
135.88
114.08
138.29
10000 104.03
119.74
111.85
131.71
112.50
136.08
114.41
137.93
113.80
138.92
115.57
138.80
112.42
137.46
112.52
137.87

Из выводов:
- преимущество php-fpm очевидно. Всегда раздражал громоздкий Apache, теперь есть стимул от него избавиться.
- в php-fpm увеличение количества воркеров с 10-и до 20-и уменьшало количество невыполненных запросов в среднем с 80-и до 2-х, но не увеличивало произодительность из-за нехватки мощности процессора. Во время выполнения любого из тестов idle зайца был около 0%.

Кому интересно посмотреть подробные логи о необработанных запросах, времени выполнения тестов и пр. — пожалуйста.

полезное. вкусное. linux shell.

Рубрики: (ddos, nginx, php, Утилиты) Автор: phpdude 08 Дек 2008

Теги : , , , , ,

привет. в борьбе с ддосом мне пригодились знания шелла, давно я этим анонизмом не занимался :)

мб кому пригодится Читать полностью »

пыха. день первый) url rewrite rules = apache || php? JUST DO IT WITH PHP (:

Рубрики: (nginx, Апаче (не вертолет), КодЛинч 0.1 beta, Полезные штуки) Автор: phpdude 23 Ноя 2008

Теги : , , , , , , , , ,

кароч. епсил чето говрил насчет пыхи. зашол, зарегался, 40 тем в форуме в профи разделе…

наткнулся http://pyha.ru/forum/topic/1205.0

думаю что это все таки частая проблема

apache mod_rewrite rules — не ПАНАЦЕЯ и это должен знать каждый!

у человека хорошая идея (тимур .. имя знакомое, но похуй). Читать полностью »

nginx. второе пришествие))

Рубрики: (nginx, Полезные штуки, Утилиты) Автор: phpdude 07 Ноя 2008

Теги : , , , , ,

решил пересобрать nginx.

залез сначала в configure … и подумал пиздец. час наверное собирал строку, чтобы получилась структура как сейчас у меня в debian linux. Читать полностью »

Помощь нуждающимся. Рандомизация картинок в папке.

Рубрики: (nginx, Без рубрики, Полезные штуки, Утилиты, флейм) Автор: phpdude 05 Ноя 2008

Теги : , , , , ,

Навеяно:

Sent at 6:26 AM on Tuesday

pryanyk: Саня, а великая сложность сделать случайное изображение и ссыку к нему?

Alexandr: смотря где

http://2315.ru/
быстро ? ;)

pryanyk: да нет.. не быстро — я хочу просто понять КАК это все работает, про 2315 пока забуть. мы с машкой пока не придумали концепцию — придумаем — обсудм все вмесет :) а там и поймем чо кого нада нам ссылки или нет

Sent at 12:55 AM on Wednesday

pryanyk: http://flashripper.net/2007/10/24/delaem-vyvod-sluchajnogo-izobrazheniya-na-php.html

ну я вот такую статью накопал

Alexandr: даже читать не хочется

гавноебаное

pryanyk: я не заставляю, да забей мне так для себя

Alexandr: 5 минут дай

на пхпвыложу)

pryanyk: ???

кого?

Alexandr: может хоть такие гавнакуски кода в интернете перестанут появлятся

pryanyk: )))) да вы батенька перфекционист

Читать полностью »

nginx. предлагаю напрячь моск. рассуждение.

Рубрики: (nginx) Автор: phpdude 04 Ноя 2008

Теги : , ,

смотрите задача.

есть файл допустим жс, его я сказал отдавать через гзип «gzip on»;

все думаю знают, что нгинкс кладет в память(рам) часто используемые файлы чтобы не напрягать винты. внимание вопрос — кладет он гзипленную версию, или текстовую ипри отдаче всегда гзипит?

надеюсь добъемся консенсуса, желательно доводы подчеркивать файктами где возможно.

Минификация и Gzip CSS + JS файлов.

Рубрики: (css & js minifier, nginx, Полезные штуки, Утилиты) Автор: phpdude 01 Ноя 2008

Теги : , , , , , ,

привет все, думаю все надеются что этот блог уже умер, какбы не так :) )

Короче затея.

Мне жутко понравился nginx веб сервер.

Есть крупный проект, на котором есть много яваскриптов, ксс файлов. задача: сделать загрузку максимально быстрой и не требовательной к веб серверу.

Читать полностью »

nginx — прелестная вещь

Рубрики: (nginx) Автор: phpdude 28 Окт 2008

Теги : , , , , ,

привет снова, я вам уже надоел, я знаю это.

пример реврайт рула для nginx. только что написал, решил поделиться, думаю может и людям пригодиться.

if (!-f $request_filename)
{
rewrite ^/files/([a-z]+)/.*?\d+(_\d+)?.jpg$ /files/$1/no$1$2.jpg break;
access_log /sites/durov.ru/logs/nginx.access_log;
}
access_log off; Читать полностью »

О САЙТЕ

Крик души может быть будет на этом сайте, а может и будет что-нибудь другое :)



Яндекс.Метрика