Тестирование сервера на производительность
26 Mar 2015 | Автор: dd |Читая всякие successful стори блогеров о том, как им с полуштуки трафа уже начинают сыпаться сказочные предложения от прямых реклов, я всегда испытываю легкое такое недоверие, т.к у меня даже с косарем-полутора, что здесь, что в туризме, почему то никто не хватает за руки и не предлагает тиснуть баннерок за пусть даже немного денег.
Все предложения, в основном, касаются бесплатной помощи с моей стороны по тому или иному вопросу, причем в режиме разжуй, положи в рот и еще 101 раз объясни, т.к вопрошающий не знает элементарщины. Ну и периодически стукаются представители говнохостингов, предлагающие халявый хостинг за свой баннер или активную ссылку.
Тут в очередной раз написали с предложением бесплатно протестировать некий VPS хостинг и оставить отзыв в теме на мауле и серче. Я несколько опешил от такой щедрой просьбы, но потом решил, что это не плохой варик посмотреть новый хостинг, да еще и вжарить по нему всякими тестерами. Причем если что вдруг- сами ж просили.
Хостинг называется HyperHosting, расположенный на Украине, в харьковском ДЦ от ITL Group. Uptime серверов заявлен 99,87%, что проверить можно только временем, т.к инфы по этому ДЦ я что то не смог найти.
Положил глаз на VPSку с 1.5Gb на борту, т.к более слабая модель была только 768Mb, что довольно странно для линейки мощностей.
После общения с манагеров на тест получился такой вот вариант:
Hardware: Processor Intel Core i7-2600 @ 1.60GHz (4 Cores), Memory: 2048MB, Disk: 35GB
Software: OS: CentOS 6.6, Kernel: 2.6.32-042stab084.12 (i686), Compiler: GCC 4.4.7 20120313, File-System: ext2/ext3
и буквально тут же, при проверке ждала первая порция лулзов, т.к админы так интересно настроили лимиты виртуали, что образовалась возможность заюзать 4Tb оперативки.
Для начала потестил немного канал, путем пробивки маршрутов до наиболее важных точек
[root@test ~]# traceroute www.msk-ix.ru
traceroute to www.msk-ix.ru (194.226.65.228), 30 hops max, 60 byte packets
1 217.12.204.58 (217.12.204.58) 0.030 ms 0.013 ms 0.011 ms
2 kharkiv1-xe-0-0-0-152.ett.ua (80.93.125.181) 0.239 ms 1.580 ms 0.232 ms
3 mskn04.transtelecom.net (217.150.47.78) 9.296 ms 9.288 ms 9.274 ms
4 * * *
5 Rosniiros-gw.transtelecom.net (217.150.63.137) 9.620 ms 9.770 ms 9.741 ms
6 MSK-M9-Relarn-1.relarn.ru (193.232.226.10) 49.284 ms 49.480 ms 49.458 ms
7 MSK-KHOUSE-Relarn-3.Relarn.ru (194.226.29.182) 49.756 ms 49.635 ms 49.415 ms
[root@test ~]# traceroute reg.ru
traceroute to reg.ru (31.31.205.2), 30 hops max, 60 byte packets
1 217.12.204.58 (217.12.204.58) 0.047 ms 0.014 ms 0.012 ms
2 core-0-wsx670410ge-8-1.230dot1q.kharkov.ucomline.net (93.178.220.33) 0.436 ms 0.498 ms 0.550 ms
3 * * *
4 topnet-10G-gw.ix.net.ua (195.35.65.34) 8.339 ms 8.331 ms 8.367 ms
5 88.81.243.1 (88.81.243.1) 17.443 ms 17.491 ms 17.521 ms
6 88.81.243.2 (88.81.243.2) 28.868 ms 28.879 ms 28.944 ms
7 bdi-793.sr7.msk1.ip.di-net.ru (213.248.3.31) 30.484 ms 30.577 ms 30.420 ms
8 vlan-799.sr3.msk6.ip.di-net.ru (213.248.3.86) 30.341 ms 30.346 ms 30.347 ms
9 mdb4.reg.ru (31.31.205.2) 30.295 ms 30.290 ms 30.273 ms
а также по IP
SPB-IX: 62.76.76.62
spb-ix-tr1.ripn.net (194.226.100.85)
NSK-IX 194.190.168.1
перечень узлов можно взять на этой странице http://www.msk-ix.ru/net/ripndns/nodes.html
Затем есессно глянул как тянет потянет с Германии и Англии. Можно добавить такие же тесты с различных сеток:
http://u2078127.plsk.regruhosting.ru/hosting-obzor.ru.zip
http://shared.eserver.ru/100Mb.bin
http://cachefly.cachefly.net/100mb.test
http://files.ecatel.nl/speedtest/100mb.bin
полный линодовский спид-тест:
https://www.linode.com/speedtest
При желании можно использовать кросс-платформенную тулзятину, служащую для тестирования полосы пропускания канала, за счет генерации TCP и UDP трафика. Единственная проблема, что это клиент-сервер, т.е для теста надо иметь два хоста, на которых ставится данная прилада
# wget http://downloads.es.net/pub/iperf/iperf-3.0.11.tar.gz
# tar -xzvf iperf-3.0.11.tar.gz
# cd iperf-3.0.11
# ./configure
# make && make install
после чего на сервере запускается прослушивание на 5201 порту:
# iperf -s
или на произвольном 63001 с выводом результатов каждую секунду
# iperf -u -s -i1 -p 63001
после чего на стороне тестируемого хоста запускаем тестирование:
# iperf -c server_IP
или более сложно- передать 10Mb на порт 63001
# iperf -n 10m -p 63001 -c server_IP
После канала можно перейти к простейшему нагрузочному тестированию с помощью стресс-утилиты siege, которая способна эмулировать параллельные сессии и пользователей.
# wget http://download.joedog.org/siege/siege-3.0.9.tar.gz
# tar -xzvf siege-3.0.9.tar.gz
# cd siege-3.0.9
# ./configure
# make && make install
После чего можем прессануть сервак задав:
тыщу последовательных хитов
# siege -b -c 1 -r 1000 http://195.54.163.173/index.html
и усложнив задачу в 100 одновременных сессий по 1000 повторов
# siege -b -c 100 -r 1000 http://195.54.163.173/index.html
Для более расширенного тестирования производительности можем использовать Phoronix Test Suite, пакет включающий в себя огромное количество разнобразных тестов производительности. Перед установкой надо достувить некоторое количество всякого добра
# yum install gcc gcc-c++ make patch php-cli autoconf automake php-domxml-php4-php5.noarch python-posix_ipc.i686
после чего переходим непосредственно к установке тестировщика
# wget http://www.phoronix-test-suite.com/download.php?file=phoronix-test-suite-2.4.1
# tar xvfz phoronix-test-suite-2.4.1.tar.gz
# cd phoronix-test-suite
# ./install-sh
весь список многочисленных тестов можно получить командой (тут может вылезти ошибка shell_exec() has been disabled for security reasons):
# phoronix-test-suite list-tests
к примеру, тест апача на основе ApacheBench (ab):
#phoronix-test-suite benchmark apache
тест IOzone показывает скорость работы файловой системы с файлами различного размера, вариаций довольно много, т.ч готовьтесь к довольно продолжительному периоду ожидания результатов если выбираете тестить все размеры и процедуры чтения-записи:
# phoronix-test-suite benchmark iozone
скорость обработки компрессии BZIP2
# phoronix-test-suite benchmark compress-pbzip2
еще одни стресс-тест харда AIO-Stress на скорость обработки ввода вывода
# phoronix-test-suite benchmark aio-stress
также можно затестить работу оперативы, проца, ядра, различных программных модулей. Пакет Phoronix Test Suite включает более 100 различных типов тестов.
Также до кучи, можно затестить работу файловой системы с помощью специальной утилиты bonnie++ (для центоса присуствует в репозитории rpmforge)
# yum -y install bonnie++
# bonnie++ -n 5:5242880:2:100 -r 1024M -s 4096M -u root -d /home
где тестим в директории /home с помощью 5 файлов, размерами от 2 байт до 5Mb (5242880 байт) в 100 подпапках, с файлом размером в 4Gb для IO теста (если его не указывать, то файл будет равен двухкратному размеру RAM), с использованием RAM в 1Mb.
Результаты расшифровываются следующим образом:
для IO теста файла на 4Gb, получается:
побайтовое заполнение шло на скорости 879Kb/sec, что заняло 97% процессорного времени
запись блоками в 8Kb шла на скорости 91174Kb/sec, что заняло 6% CPU
поблочная перезапись выполнялась на скорости 91795Kb/sec при 6% CPU
побайтовое чтение шло на скорости 3805Kb/sec при 98% CPU
чтение блоками в 8Kb шла на скорости 5593061Kb/sec, что заняло 96% CPU
тест случайного чтения шел на скорости 2322 файлов в секунду и занял 37% CPU
для теста 5 файлов, получается:
создание файлов происходило на скорости 29 файлов/сек. и 5% CPU
чтение файлов – 25 файлов/сек. и 4% CPU
удаление файлов – 3823 файлов/сек. и 56% CPU
случайное создание файлов – 28 файлов/сек. и 5% CPU
случайное чтение файлов – 32 файлов/сек. и 5% CPU
случайное удаление файлов – 4738 файлов/сек. и 70% CPU
Сам тест может создавать нагрузки соответствующие многочисленным серверным приложениям, также тестировать файловую систему на скорость записи и чтения, а также спрогнозировать те или иные специфические настройки файловой системы.
Единственный минус, что данные выводятся в не очень удобоваримом формате, т.ч лучше их перекидывать на отдельную бумажку, чтобы уже изучать не в консоли.
Более подробно об использовании bonnie++ можно почитать на линуховых манах.
Тестирование сервера на производительность,