shoorick: (Default)
Удалось запустить подопытный сайт через nginx+FastCGI. Предварительно пришлось поставить p5-FastCGI-ProcManager, который почему-то не был автоматически поставлен при установке каталиста и обновить libtool, без которого FastCGI::ProcManager не желал ставиться.

Наблюдается интересная картина: производительность, судя по результатам работы ab, в 2–2,5 раза хуже, чем при использовании Apache+mod_perl (но во столько же лучше, чем у каталистового тестового сервера), однако расход памяти заметно ниже: апач на каждый процесс сразу отъедал около 60 метров памяти, процессы размножались и раздувались (до 200 метров на процесс — легко!), потребляя в сумме несколько гигабайт (стремясь сожрать всю доступную память: и физическую, и виртуальную); при использовании FastCGI всё не так: запускается всего 2 процесса со сходными аппетитами на память, один из них ничего не делает, зато другой делает, видимо, всё остальное:
$ top
  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
Статичные файлы, как можно догадаться, раздаются непосредственно nginx'ом. Лёгкие файлы (например, иконка весом менее килобайта) выдаются раза в 2 быстрее, чем апачем, тяжёлые (например, prototype.js — больше 100 кБ) — примерно с одинаковой скоростью.
shoorick: (Default)
Задача — протестировать сайт на работу при большой нагрузке. Попробовали 2 способа:
  1. При помощи ab послали вагон запросов на какую-то одну страницу, попутно пытаясь пользоваться сайтом в обычном режиме,
  2. Посадили за компьютеры пару десятков юзеров и попросили их усиленно покликать по ссылкам.
Оба метода, хоть и не совсем бессмысленны, создают совсем не ту нагрузку, которая нужна: в первом случае нет хождения по ссылкам (или я ман плохо читал?), а во втором интенсивность кликов явно меньше той, что может обеспечить ab.

Что делать?
shoorick: (Default)
Из двух вариантов, одинаковых по сложности написания, надо выбирать тот, что шустрее работает. В перле скорость выполнение можно замерить средствами модуля Benchmark. Пробуем:
#!/usr/bin/perl -w
use strict;

use Benchmark qw(:all);

my $long = 'c_documents_and_settings_administrator_moi_dukumenty_files_very_very_very_long_name.doc';
my $short;

cmpthese(1e6, {
	'regexp' => sub { $short = $1 if ($long =~ /(.{1,25})$/); },
	'substr' => sub { $short = substr $long, -25 },
});
Получаем:
            Rate regexp substr
regexp  315271/s     --   -77%
substr 1361702/s   332%     --
То есть, получение хвоста строки функцией substr осуществляется в 3 раза быстрее, чем регулярными выражениями.

Profile

shoorick: (Default)
shoorick

December 2016

S M T W T F S
    1 23
45678910
11121314151617
18 19 2021222324
25262728293031

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 23rd, 2026 07:36 am
Powered by Dreamwidth Studios