5. Кузнецов, К. Конкурсные закупки: торги, тендеры, конкурсы. - СПб: Питер, 2005. - 368 с.
УДК 004.4
Латыпов Э. Ф. студент 4 курса
факультет информационных систем и технологий научный руководитель: Никульников Н.В., к.э.н.
доцент
Поволжский государственный университет телекоммуникаций и информатики
Россия, г. Самара
Latypov E.F. 4 year student Faculty of Information Systems and Technologies Volga State University of Telecommunications and Informatics
Russia, Samara city СРАВНИТЕЛЬНЫЙ АНАЛИЗ РАБОТЫ ВЕБ-СЕРВЕРОВ
APACHE И NGINX
Аннотация: В рамках данной статьи рассматривается один из методов тестирования производительности веб-серверов Apache и Nginx на примере нескольких режимов работы PHP(mod_php, FastCGI, php_fpm, Apache/Nginx).
Ключевые слова: Nginx, Apache, Веб-сервер, PHP, запрос.
COMPARATIVE ANALYSIS OF THE WORK OF WEB SERVER
APACHE AND NGINX
Annotation: Within the framework of this article, one of the methods for testing the performance of Apache and Nginx web servers is considered using several PHP operating modes (mod_php, FastCGI, php_fpm, Apache / Nginx).
Keywords: Nginx, Apache, Web-server, PHP, inquiry.
В настоящее время ввиду активного развития технологий стоит проблема выбора наиболее подходящего веб-сервера для обеспечения наилучшей работы готовых веб-проектов.
В связи с этим вводится множество методов их тестирования на примере различных режимов работы PHP, помогающие подобрать наиболее подходящую конфигурацию веб-сервера в зависимости от производительности и других факторов.
В данной статье рассматривается один из таких методов тестирования веб-серверов Apache и Nginx на примере нескольких режимов работы PHP, а также рассматривается их внутреннее устройство.
На сервере используется операционная система Centos.
Веб-серверы были установлены с начальными настройками, командами:
[root@testserver]# yum install httpd [root@testserver]# yum install nginx
Также была произведена настройка конфигурацонных файлов для работы PHP в режимах mod_php, FastCGI(Apache), php_fpm(Nginx), Apache+Nginx(backend+frontend). Дополнительные модули, кроме необходимых для работы данных режимов, подключены не были.
Для тестирования нагрузки используется утилита Apache Benchmark. Главная задача Apache Benchmark - генерировать запросы к указанному URL. Для использования Apache Benchmark необходимо установить пакет apache2-utils:
PC:~/$ sudo apt-get install apache2-utils Процесс тестирования
Для тестирования были изменены некоторые директивы в конфигурационных файлах Apache и php-fpm:
Для php-fpm - /etc/php-fpm.d/pool.d/www.conf: pm.max_children = 100 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 10 pm.max_requests = 0
Для Apache - /etc/httpd/conf/httpd.conf: <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 100 MaxRequestsPerChild 0 </IfModule>
В директории сайта был создан файл index.php со следующим содержанием:
<?php for($i = 0; $i < 1000; ++$i) { echo "Hello, World! $i "; } Параметры, использованные для тестирования нагрузки:
- общее количество запросов в течение одной сессии(-л);
- количество параллельных запросов в единицу времени(^);
- максимальное время ожидания ответа (-s). По умолчанию используется параметр со значением 30 секунд. Увеличили его до 120 секунд для избежания ошибок вида "apr_poll: The timeout specified has expired (70007)";
Конечный запрос на примере site1.ru(при значении Concurrency Level=10):
PC:~/$ ab -c 10 -n 1000 -s 120 http:/site1.ru/index.php
Тестирование проводилось с изменением значения параллельных
запросов(10, 50, 100, 200) при использовании утилиты ab. По каждому из них было произведено пять замеров, после замеров вычислялось среднее арифметическое.
№ Name Concurrency LeveklO Concurrency Level: 50 Concurrency Level: 100 Concurrency Level: 200
1 mod_php(Apache) Ш5 1228 1213 1062
2 FastCGI(Apache) 1322 12IM 1199 1073
3 php_fpnn [Nginx) 1051 1017 1007 967
4 Apache+Nginx 1009 993 975 941
Рис. 1 Результаты тестирования
Рис. 2 Гистограмма результатов
По результатам тестирования можно сделать следующие выводы:
1. при повышении количества одновременных запросов уменьшаются разница в результатах, а также скорость ответа;
2. nginx при небольшом и среднем количестве одновременных запросов медленнее apache;
3. nginx+apache работает практически сопоставимо с php_fpm(Nginx).
4. Разница между mod_php(Apache) и FastCGI(Apache) практически отсутствует.
В отличие от mod_php(Apache) и FastCGI(Apache), при режиме php_fpm(Nginx) на порту 80 используется веб-сервер Nginx, а порт 9000 используется FastCGI-сервером FPM. Nginx проксирует запросы для FPM, т.е. принимает запрос, перенаправляя его FPM по протоколу FastCGI.
При использовании mod_php(Apache) запросы обрабатываются непосредственно веб-сервером без проксирования. Данная система состоит из двух звеньев - Клиент(Apache Benchmark) и Apache. В случае с php_fpm(Nginx) система состоит из трех звеньев - Клиент^), ^^(порт 80) и FPM(порт 9000), что влияет на производительность. Ситуация со связкой Apache+Nginx аналогична, поэтому разница в результатах между
Apache+Nginx и php_fpm(Nginx) практически незаметна.
Однако, преимущество Nginx перед другими веб-серверами состоит в обработке и отдаче статического контента (html, css, js, картинки и т.п). Кроме того, Nginx способен обслуживать одновременно очень большое количество подключений, что также недоступно в случае использования Apache.
Поэтому роль Nginx как правило заключается в балансировке нагрузки, отдаче статического контента, проксированию запросов к PHP на внутренние сервера, а самое главное - к работе с медленными клиентами. В этом случае лучшим вариантом будет настройка php-fpm для обработки php запросов через него.
В случае, если требуется работа со сложными перенаправлениями, дополнительными модулями Apache, фильтрами содержимого, то в данной ситуации логично выбрать Apache в режиме mod_php или FastCGI.
Использованные источники:
1. Хоккинс, С. Администрирование Web-сервера Apache и руководство по электронной коммерции [текст]/ С. Хоккинс - Вильямс, 2000. - 330 с.
2. Айвалиотис Д. Администрирование сервера Nginx [текст]/ Д. Айвалиотис. - ДМК Пресс 2013. - 288 с.
3. Аулдс Ч. Администрирование веб-сервера Apache Linux, второе издание [текст]/ Ч. Аулдс. - Крэйг Хант лаборатория Линукс, 2002. - 624 с.
4. Колиснеченко Д. Администрирование Unix-сервера и Linux-станций [текст]/ Д. Колиснеченко. - Питер, 2011. - 400 с.
УДК 004.42
Латыпов Э. Ф. студент 4 курса
факультет информационных систем и технологий Поволжский Государственный Университет Телекоммуникаций и Информатики
Россия, г. Самара
Latypov E.F. 4year student Faculty of Information Systems and Technologies Volga State University of Telecommunications and Informatics
Russia, Samara city ОБЗОР ТЕХНОЛОГИИ COMPONENT OBJECT MODEL Аннотация
В статье представлен краткий обзор технологии Component Object Model. Были рассмотрены основные концепции и преимущества данной технологии.
Ключевые слова: Microsoft, Windows, COM, DCOM, клиент, сервер.