Нагрузочное тестирование сервера

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

Нагрузочное тестирование сервераС момента существования проекта mini Server прошло немало времени. Я пишу этот пост, который должен быть одним из первых в списке из жизни mini Server. Это первая статья о тестировании сервера. Внимание обсуждение, сравнение, предложения и отзывы, только на форуме, для не понятных и тех, кто в танке "Вас удалят, если Вы решите писать в комментариях. Это в лучшем случае". Для всех зарегистрированных пользователей проекта mini Server приглашаем присоединиться к тестированию систем, на форуме: Нагрузочное тестирование сервера.

Тестирование сервера

При использовании Ubuntu server или Debian (возможно такое программное обеспечение используется и на других операционных системах Linux, мною лично не проверялось), Вы можете использовать уже предустановленное программное обеспечение для создания нагрузки на выбранный хост. Само тестирование использует утилиту ab - Apache HTTP server benchmarking tool, это специальное программное обеспечение для серверов служащее для определения максимального количества пользователей на сайте, как одновременно, так и последовательно. Другими словами пакет ab производит нагрузку на сервер с заданными параметрами, например количества запросов в разной последовательности как по очереди пока, так и одновременно все или заданное число. Разберем пример, выполнив команду в консоли сервера:

  • ab -n 1000 /test.php

Где 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, используя логин и пароль учетной записи пользователя:

  • nano /var/www/clients/client8/web4/web/info.php
<?php
phpinfo();
?>

Теперь мы вызываем этот файл в браузере в нашем примере это /info.php):

Ubuntu server 10.10

Это всего лишь пример, и не является оригиналом данного тестирования

Если Вы получили похожую страницу, можно продолжать запустить тест, выполнив команду показанную выше.

Нагрузка на сервер

В списке Выше, я уже продемонстрировал на результат тестирования. Из них видно количество запросов, время их выполнения и количество ошибок. Для примера я хотел бы ознакомить с материалом стороннего сайта http://www.hwp.ru/articles/Sravnenie_dvuh_serverov_HP_ProLiant_DL380_serii_G5_i_G6_71659/?PAGEN_1=5, в котором Вы можете наблюдать следующую сводку данных:

Тут обнаружилась проблема. Дело в том, что при действительно большой нагрузке в 100 одновременных соединений, Apache на сервере зависал, что не позволяло выжать максимум из серверов.

Сразу скажу Вам, на я выполнял похожий тест на своей системе и получил, но не с 100 запросами, а 1000 одновременных подключений. Для выполнения такого теста необходимо выполнить следующую команду:

  • ab -k -n 1000 -c 1000 /test.php
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 ГБ.

Аналогично с командой:

  • ab -k -n 100 -c 10 /

Я посчитал, что нагруженный графикой и модулями сайт 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 приглашаем присоединиться к тестированию систем, на форуме: Нагрузочное тестирование сервера.


Обмениваться, хранить, передавать Ваши файлы стало просто как никогда.
yandex-disk
Читать подробнее: для чего Yandex-Диск проекту Mini-Server. Практика установки, настройки и использования сетевого хранилища на Ubuntu server LTS 12.04 в статье Резервное копирование сервера Ubuntu на Яндекс Диск.

>> Ubuntu 12.04 + Nginx Скачать сервер
>> Fedora 15 Скачать сервер
>> Простой Debian 6.0.6 Скачать сервер
>> CentOS 6.0 и
+ (5.6) другой
Скачать сервер
>> OpenSUSE 11.4
MAX
Скачать сервер

Вход на сайт

ВНИМАНИЕ!

Регистрация на сайте только по согласованию с администратором ресурса. Обращаться через форму обратной связи.