ac@eserv.ru
Блог
Общие папки
Проекты и группы
Контакты
Визитка
План
Программы
Настройки
ТемаОтДатаРазм
Яндекс посчитал почтовые службы на доменах рунетаsupport2012.10.10 18:581 Кб
Облачноеsupport2011.07.13 19:331 Кб
Android proxy - обещанного три года ждутsupport2011.06.17 17:090 Кб
Правильный протоколsupport2011.05.27 16:281 Кб
Гагарин. Made in USSR.ac2011.04.12 03:181 Кб
В домене .RU уже 3 млрд именsupport2011.04.09 06:161 Кб
Некрасов о Яндексеsupport2011.02.21 22:550 Кб
Назад к железуsupport2011.02.16 21:562 Кб
Android не smartsupport2010.11.15 00:461 Кб
Юбилей папки spamsupport2010.11.12 23:241 Кб
ВКонтакте внедряет Байесаac2010.08.26 18:231 Кб
Из жизни вирусовac2010.07.07 17:382 Кб
Imminet Protect переименовали в ClamAV for Windowsac2010.05.08 23:091 Кб
1 июля SQLite станет еще быстрееac2010.05.08 07:162 Кб
Thunderbird 3.1 beta2 улучшает поддержку Eservac2010.05.06 02:441 Кб
Eserv DNS-сервер принял первые доменыac2010.04.07 05:131 Кб
Berkeley DB 5 как убийца SQLite 3 ?ac2010.04.03 19:312 Кб
WinSock от меня усталsupport2010.03.30 20:300 Кб
acFilter или искусственный интеллект в кубеac2010.03.26 22:411 Кб
Как поломать Thunderbirdac2010.03.26 21:221 Кб
А по-немецки с лошадьмиsupport2010.03.23 00:061 Кб
Opera и русские X.509-сертификатыac2010.02.26 05:381 Кб
Загадка FileZilla 3.3.1ac2010.02.04 21:141 Кб
Firefox 3.5.6 поломал NTLMac2010.02.01 06:251 Кб
Обучение или дрессировкаac2010.01.11 16:210 Кб
Вышел Thunderbird 3.0ac2009.12.11 20:041 Кб
Нейробиология и обучение байесовsupport2009.12.06 06:130 Кб
Телефон против интернетаac2009.12.04 00:011 Кб
Голова профессора Доуэляac2009.11.14 22:011 Кб
IE8 самый быстрыйac2009.11.13 07:494 Кб
О доверии серверуac2009.11.02 17:131 Кб
IE8 и deflate content-encodingac2009.10.12 08:503 Кб
Культурный слойAndrey Cherezov2009.09.26 03:282 Кб
Как самостоятельно скомпилировать EservAndrey Cherezov2009.08.21 11:332 Кб
PHP и ISAPIAndrey Cherezov2009.08.21 00:321 Кб
Microsoft прячет VPNы от провайдеровAndrey Cherezov2009.08.10 18:222 Кб
Очень быстрая сеть или машина времениAndrey Cherezov2009.08.06 03:411 Кб
Главная статья про NATAndrey Cherezov2009.07.24 20:191 Кб
Тест на зрелость платформыAndrey Cherezov2009.07.10 20:031 Кб
Производительность CGI, FastCGI и ISAPI в acWEBAndrey Cherezov2009.05.31 09:363 Кб
FlashPlayer и deflate encodingAndrey Cherezov2009.05.23 07:091 Кб
Git over WebDav в EservAndrey Cherezov2009.05.06 18:592 Кб
Исправление Lightning для поддержки русских имен календарейAndrey Cherezov2009.05.05 20:541 Кб
Реклама отсутствующего Exchange ServerAndrey Cherezov2009.05.05 19:021 Кб
Архивация в Thunderbird3AndreyCherezov@2009.04.24 22:441 Кб
RU-CENTER - почта не работает три дняAndrey Cherezov2009.04.23 17:331 Кб
RU-CENTER заспамили насмертьAndrey Cherezov2009.04.22 13:592 Кб
Самопубликация для всех пользователей всех доменовAndrey Cherezov2009.04.20 06:551 Кб

Производительность CGI, FastCGI и ISAPI в acWEB

По просьбе Андрея Матвеева добавил в acWEB поддержку FastCGI. Потом позапускал небольшой стресс-тест для выявления багов, утечек и производительности: с помощью CURL 5ю потоками получал в каждом потоке по 100 раз страницу http://127.0.0.1/egroupware/admin/index.php (выбрано приложение, используемое заказчиком . В пяти режимах — CGI, FastCGI, FastCGI nts, ISAPI и ISAPI+eAccelerator. Багов и утечек не выявлено.

Производительность такова:
Версия PHPРежимНа 500 запросов затрачено секунд
5.2.9-2CGI317
5.2.9-2FastCGI140
5.2.9-2-ntsFastCGI101
5.2.9-2ISAPI126
5.2.8-ntsFastCGI115
5.2.8ISAPI+eAccelerator64
(для 5.2.9-2 нет готового eAccelerator; также нет версии eAccelerator для nts-вариантов PHP). В тестах FastCGI использовались 8 или 4 preforked процессов, Eserv распределял между ними нагрузку.

Итого: FastCGI быстрее ISAPI только в случае использования особой nts-версии ("непотокобезопасной"), в которой нет межпоточных блокировок. Между рекомендуемым пулом из 8 процессов и 4х процессов разницы в производительности практически нет. При использовании одного FastCGI-процесса падение производительности примерно на 30% (в таблице не показано).

10 запросов в секунду для eGroupware похоже не предел — ни в одном из тестов процессор (Athlon X2 3800) не загружался более чем на 60%. В FastCGI и CGI-тестах, т.е. PHP вне acWEB, загрузка процессора от acWEB, curl и MySQL была нулевой, все 60% приходились на PHP. Для сравнения последний тест (ISAPI+eAccelerator) с 10ю потоками, т.е. 1000 запросов, выполняется за 147 секунд (FastCGI — 231 секунду), средняя загрузка процессора меньше 50%. Можно было бы предположить, что PHP не может использовать более одного ядра процессора в ISAPI, но по графикам загрузки процессора видно, что равномерно используются оба ядра. Задержка (ожидание ресурса или просто пауза) в каком-то из компонентов PHP. Тот же 10-поточный тест, исполняющий PhpInfo() выполняется PHP-5.2.8 FastCGI за 58 секунд (ISAPI+eAccelerator за 22 секунды) и грузит процессор на 100%.

acWEB с поддержкой /FastCGI: http://www.eserv.ru/download/acWEB_310509.rar

Простейший способ включения FastCGI для PHP в OnRequest acWEB:
File *.php | FastCgi {HTTP[PhpFastCgiPort]}

По умолчанию сервером перебираются 8 портов, начиная с указанного. Можно ограничить командой
1 FcgiServers !

Запуск PHP для FastCGI в описанном варианте взаимодействия таким bat-файлом:
set PHP_FCGI_MAX_REQUESTS=0 start php-cgi.exe -b 9000 start php-cgi.exe -b 9001 start php-cgi.exe -b 9002 start php-cgi.exe -b 9003 start php-cgi.exe -b 9004 start php-cgi.exe -b 9005 start php-cgi.exe -b 9006 start php-cgi.exe -b 9007
 
Комментарии к этой версии (31.05.2009 09:36) [~Andrey Cherezov]