С момента существования проекта mini Server прошло немало времени. Я пишу этот пост, который должен быть одним из первых в списке из жизни mini Server. Это первая статья о тестировании сервера. Внимание обсуждение, сравнение, предложения и отзывы, только на форуме, для не понятных и тех, кто в танке "Вас удалят, если Вы решите писать в комментариях. Это в лучшем случае". Для всех зарегистрированных пользователей проекта mini Server приглашаем присоединиться к тестированию систем, на форуме: Нагрузочное тестирование сервера.
Тестирование сервера
При использовании Ubuntu server или Debian (возможно такое программное обеспечение используется и на других операционных системах Linux, мною лично не проверялось), Вы можете использовать уже предустановленное программное обеспечение для создания нагрузки на выбранный хост. Само тестирование использует утилиту ab - Apache HTTP server benchmarking tool, это специальное программное обеспечение для серверов служащее для определения максимального количества пользователей на сайте, как одновременно, так и последовательно. Другими словами пакет ab производит нагрузку на сервер с заданными параметрами, например количества запросов в разной последовательности как по очереди пока, так и одновременно все или заданное число. Разберем пример, выполнив команду в консоли сервера:
|
Где www.mini-server.ru - адрес сайта на Вашем сервере. Внимание! Для сравнения производительности я рекомендую использовать одинаковые файлы страницы для теста. В данном примере я использую страницу test.php. Страница test.php используется мной, для вывода информации об установленном программном обеспечении сервера, а это значит, конечный результат вывода страницы test.php в Вашем случае может отличаться от моего. Подробнее об этом Вы можете прочитать на форуме проекта mini Server.
Пока мы вернемся к нашей команде, которая запустит тестирование сервера. Она произведет нагрузку на сервер в виде 1000 пользователей, которые обращаются к серверу по очереди, это значит что при запросе страницы www.mini-server.ru/test.php ее открывает не более 1 пользователя одновременно.
root@server:~# ab -n 1000 /test.php This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking www.mini-server.ru (be patient) Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed 600 requests Completed 700 requests Completed 800 requests Completed 900 requests Completed 1000 requests Finished 1000 requests Server Software: Apache/2.2.17 Server Hostname: www.mini-server.ru Server Port: 80 Document Path: /test.php Document Length: 53163 bytes Concurrency Level: 1 Time taken for tests: 18.274 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 53354000 bytes HTML transferred: 53163000 bytes Requests per second: 54.72 [#/sec] (mean) Time per request: 18.274 [ms] (mean) Time per request: 18.274 [ms] (mean, across all concurrent requests) Transfer rate: 2851.31 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 1 2 0.5 2 4 Processing: 12 17 35.1 15 1123 Waiting: 5 9 35.1 8 <6 Total: 14 18 35.0 17 1124 Percentage of the requests served within a certain time (ms) 50% 17 66% 17 75% 18 80% 18 90% 18 95% 19 98% 20 99% 21 100% 1124 (longest request)
Для тех кто еще не знает как создать аналогичный файл, создайте следующий файл PHP в корневой каталог сайта Для примера я использую корневой каталог сайта на основе идеального сервера /var/www/clients/client8/web4/web/, перед созданием файла уточните корневой каталог Вашего сайта перед началом создания, или загрузите его по FTP, используя логин и пароль учетной записи пользователя:
|
<?php phpinfo(); ?>
Теперь мы вызываем этот файл в браузере в нашем примере это /info.php):
Это всего лишь пример, и не является оригиналом данного тестирования
Если Вы получили похожую страницу, можно продолжать запустить тест, выполнив команду показанную выше.
Нагрузка на сервер
В списке Выше, я уже продемонстрировал на результат тестирования. Из них видно количество запросов, время их выполнения и количество ошибок. Для примера я хотел бы ознакомить с материалом стороннего сайта http://www.hwp.ru/articles/Sravnenie_dvuh_serverov_HP_ProLiant_DL380_serii_G5_i_G6_71659/?PAGEN_1=5, в котором Вы можете наблюдать следующую сводку данных:
Тут обнаружилась проблема. Дело в том, что при действительно большой нагрузке в 100 одновременных соединений, Apache на сервере зависал, что не позволяло выжать максимум из серверов.
Сразу скажу Вам, на я выполнял похожий тест на своей системе и получил, но не с 100 запросами, а 1000 одновременных подключений. Для выполнения такого теста необходимо выполнить следующую команду:
|
root@server:~# ab -k -n 1000 -c 1000 /test.php This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking www.mini-server.ru (be patient) Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed 600 requests Completed 700 requests Completed 800 requests Completed 900 requests Completed 1000 requests Finished 1000 requests Server Software: Apache/2.2.17 Server Hostname: www.mini-server.ru Server Port: 80 Document Path: /test.php Document Length: 53163 bytes Concurrency Level: 1000 Time taken for tests: 41.229 seconds Complete requests: 1000 Failed requests: 35 (Connect: 0, Receive: 0, Length: 35, Exceptions: 0) Write errors: 0 Keep-Alive requests: 0 Total transferred: 51486610 bytes HTML transferred: 51302295 bytes Requests per second: 24.25 [#/sec] (mean) Time per request: 41229.057 [ms] (mean) Time per request: 41.229 [ms] (mean, across all concurrent requests) Transfer rate: 1219.53 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 1 1002 2510.4 6 13597 Processing: 17 1965 4631.8 836 32215 Waiting: 0 501 1128.0 49 21136 Total: 18 2968 5415.1 943 41214 Percentage of the requests served within a certain time (ms) 50% 943 66% 1610 75% 2697 80% 3837 90% 6785 95% 13609 98% 24233 99% 26148 100% 41214 (longest request)
Интересное замечание: нагрузочное тестирование сервера выявило появление ошибок, нагрузка на сервер до 12% (Intel(R) Celeron(R) CPU E3300 @ 2.50GHz), высокое использование оперативной памяти (около 2 ГБайт), больше всех с нагрузкой не справился жесткий диск 7200 об/мин с емкостью на 500 ГБ.
Аналогично с командой:
|
Я посчитал, что нагруженный графикой и модулями сайт www.mini-server.ru должен показать, результат хуже, чем в предложенной выше статье.
root@server:~# ab -k -n 100 -c 10 / This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking www.mini-server.ru (be patient).....done Server Software: Apache/2.2.17 Server Hostname: www.mini-server.ru Server Port: 80 Document Path: / Document Length: 63375 bytes Concurrency Level: 10 Time taken for tests: 16.769 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Keep-Alive requests: 0 Total transferred: 6388800 bytes HTML transferred: 6337500 bytes Requests per second: 5.96 [#/sec] (mean) Time per request: 1676.925 [ms] (mean) Time per request: 167.693 [ms] (mean, across all concurrent requests) Transfer rate: 372.05 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 1 2 1.2 1 6 Processing: 377 1638 477.8 1614 3351 Waiting: 359 1622 478.2 1602 3338 Total: 380 1639 477.8 1615 3352 Percentage of the requests served within a certain time (ms) 50% 1615 66% 1726 75% 1867 80% 1902 90% 2027 95% 2642 98% 2990 99% 3352 100% 3352 (longest request)
Для всех зарегистрированных пользователей проекта mini Server приглашаем присоединиться к тестированию систем, на форуме: Нагрузочное тестирование сервера.