shoorick: (Default)
[personal profile] shoorick
Попробовал позавчера найти экспериментальным путём лучшее (с точки зрения производительности) количество дочерних процессов, с которыми следует запускать nginx + Catalyst::Engine::HTTP::Prefork и Apache + mod_perl.

Апач настраивал изменением параметра MaxClients в httpd.conf.

Связку нгинкса с каталистовым сервером — чуть сложнее: нгинкс не трогал, а менял параметры каталистового сервера: методу AppName->run можно, помимо прочих параметров, передать max_servers, задающий максимально допустимое количество создаваемых сервером дочерних процессов.

Картина получилась достаточно странная:

Зависимость производительности от числа запущенных процессов

Хотя результат по-прежнему зависит непонятно от чего: например, сегодня оба варианта показали бóльшую производительность, но с прежним соотношением: 9 к 12.

Либо можно попытаться ускорить само каталистовое приложение (Как? Менять шаблонизатор? Оптимизировать SQL-запросы? Апгрейдить железо? Выбрасывать бэкенд на отдельную машину?) — и не забивать себе голову подобными соревнованиями.

upd/21.01.2010: Более точное тестирование показало равную производительность апача и нгинкса.

Date: 2010-01-20 10:49 am (UTC)
From: [identity profile] quappa.livejournal.com
А как тестировали? Количество процессов влияет на производительность только если есть достаточное количество параллельных клиентов.

Как тестировал

Date: 2010-01-20 03:36 pm (UTC)
From: [identity profile] shoorick.livejournal.com
Запускал ab в несколько потоков (пробовал значения от 5 до 100).
То есть, например, так:
ab -n 1000 -c 50 -C имя_куки=значение http://host:port/path

Date: 2010-01-20 11:09 am (UTC)
From: [identity profile] tarkhil.livejournal.com
1. SQL - в высшей степени наше все. Я встречал сайт, на котором траффик SQL-сервера в два раза превышал траффик апача
2. TT - один из самых медленных шаблонизаторов
3. Catalyst в отладочном режиме пишет тайминг, сразу видно, где тормоза.
4. Разносить фронт, бэк и SQL - хорошее решение. Если есть деньги.

По пунктам

Date: 2010-01-20 03:55 pm (UTC)
From: [identity profile] shoorick.livejournal.com
1. Засекал время работы. Якобы, не в SQL дело: большая часть времени
уходит на шаблонизатор. Хотя та куча запросов, которую генерит
DBIx::Class, меня очень удивила: когда я писал запросы руками, я считал,
что десяток запросов — это чрезмерно много. А тут их число выходит
иногда за сотню (про prefetch мне уже подсказали).
Сейчас SQL-сервер с приложением сидят на одной машине — возможно, из-за
такого тесного соседства причина тормозов пока не в SQL.

2. Угу. Автор CTPP2 ([livejournal.com profile] slonik_v_domene) их сравнивал.
Результаты удручающие.
Но моментально перевести сайт c TT на CTPP не выйдет —
мы уже много всего настрогали на TT.

4. Денег не то, чтобы совсем нет (я надеюсь), но их трудно потратить.
SQL-сервер уже вынесли.
Попробую перенести базу туда и сравнить скорость.
Сейчас закончу тестирование nginx+чё-нибудь
(вроде, работает) —
попробую распараллеливание с выносом бэкендов на другие машины.

Re: По пунктам

Date: 2010-01-20 05:43 pm (UTC)
From: [identity profile] tarkhil.livejournal.com
Есть некий Template::Alloy, бают, он гораздо быстрее...

Re: По пунктам

Date: 2010-01-20 05:45 pm (UTC)
From: [identity profile] tarkhil.livejournal.com
По п. 4 - memcached+repcached в качестве хранилища состояний, не забудь

Profile

shoorick: (Default)
shoorick

December 2016

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

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 21st, 2026 04:20 pm
Powered by Dreamwidth Studios