В предыдущей статье мы изучили конкретные утилиты и инструменты для тестирования базы данных MySQL. В этом статье мы приведем примеры реальных эталонных тестов, выполненных с помощью вышеупомянутых инструментов. Мы не можем дать исчерпывающее описание каждого инструмента, но эти примеры помогут вам решить, какие эталонные тесты могут оказаться полезными для ваших целей, и начать их использовать. Начнем с утилиты http_load.
Начнем с простого примера, демонстрирующего работу http_load
. Мы будем использовать следующие адреса URL, которые сохранили в файле urls.txt:
- http://www.mysqlperformanceblog.com/;
- http://www.mysqlperformanceblog.eom/page/2/;
- http://www.mysqlperformanceblog.com/mysql-patches/;
- http://www.mysqlperformanceblog.com/mysql-performance-presentations/;
- http://www.mysqlperformanceblog.com/2006/09/06/slow-query-log-analyzes-tools/.
В простейшем варианте http_load
извлекает страницы по указанным адресам в цикле. Программа делает это с максимально возможной скоростью:
$ http_load -parallel 1 -seconds 10 urls.txt
19 fetches, 1 max parallel, 837929 bytes, in 10.0003 seconds
44101.5 mean bytes/connection
1.89995 fetches/sec, 83790.7 bytes/sec
msecs/connect: 41.6647 mean, 56.156 max, 38.21 min
msecs/first-response: 320.207 mean, 508.958 max, 179.308 min
HTTP response codes:
code 200 - 19
Результаты вполне понятны — они всего лишь показывают статистическую информацию о запросах.
Немного более сложный сценарий заключается в извлечении адресов URL с максимально возможной скоростью в цикле, но с имитацией пяти параллельных пользователей:
$ http_load -parallel 5 -seconds 10 urls.txt
94 fetches, 5 max parallel, 4.75565e+06 bytes, in 10.0005 seconds
50592 mean bytes/connection
9.39953 fetches/sec, 475541 bytes/sec
msecs/connect: 65.1983 mean, 169.991 max, 38.189 min
msecs/first-response: 245.014 mean, 993.059 max, 99.646 min
HTTP response codes:
code 200 - 94
Вместо максимально быстрого извлечения мы можем симулировать нагрузку для прогнозируемой частоты запросов (например, пять раз в секунду):
$ http_load -rate 5 -seconds 10 urls.txt
48 fetches, 4 max parallel, 2.50104e+06 bytes, in 10 seconds
52105 mean bytes/connection
4.8 fetches/sec, 250104 bytes/sec
msecs/connect: 42.5931 mean, 60.462 max, 38.117 min
msecs/first-response: 246.811 mean, 546.203 max, 108.363 min
HTTP response codes:
code 200 - 48
Наконец, имитируем еще большую нагрузку с частотой поступления запросов 20 раз в секунду. Обратите внимание, как с возрастанием нагрузки увеличивается время соединения и отклика:
$ http_load -rate 20 -seconds 10 urls.txt
111 fetches, 89 max parallel, 5.91142e+06 bytes, in 10.0001 seconds
53256.1 mean bytes/connection
11.0998 fetches/sec, 591134 bytes/sec
msecs/connect: 100.384 mean, 211.885 max, 38.214 min
msecs/first-response: 2163.51 mean, 7862.77 max, 933.708 min
HTTP response codes:
code 200 -- 111