О чём говорит apache benchmark
Когда я первый раз столкнулся с задачей оптимизации скорости работы сайта, я начал рыскать по просторам интернета, чтобы получить хоть какое-то представление о том, как эта самая оптимизация делается. Именно тогда я в первый раз услышал об утилите «apache benchmark», которая как сказано в описании официального сайта apache «главным образом показывает, как много запросов способен выполнить ваш сервер».
Прочитав документацию, я решил опробовать утилиту в действии, а в качестве подопытного использовать сайт самих разработчиков apache. После того как я прописал в консоль «ab -c10 -n100 httpd.apache.org/», мне сообщили что «httpd.apache.org» бенчмаркетится (benchmarkering), что если верить словарю переводится как «тестируется». Также мне посоветовали быть терпеливым, что я собственно и сделал. Спустя некоторое время, утилита выдала информацию о результатах своего труда. Должен признать, что увидев данную таблицу впервые, я не понял ровным счетом ничего, и вынести для себя какую-то полезную информацию было достаточно тяжело. Потратив некоторое время я, конечно, во всем разобрался, и сейчас хочу поделиться тем, как я понимаю то, о чем нам говорит «apache benchmark».
Итак, результаты тестирования были следующими:
Вначале все предельно понятно:
Server Software: Apache/2.3.8 — установлен сервер Apache (вот было бы весело если бы было по другому) версии 2.3.8.
Server Hostname: httpd.apache.org — имя сервера хостинга httpd.apache.org.
Server Port: 80 — при тестировании использовался 80-й порт.
Document Path: / — путь к документу. В нашем случае — основная директория.
Document Length: 13666 bytes — размер документа — 13,6Кб. Причем, это размер не учитывающий встроенные элементы, например, изображения. Сохранив страницу на локальный компьютер, можно увидеть, что на странице размещены два изображения общим размером 18Кб, а вот сам html файл страницы весит приблизительно 14Кб.
Concurrency Level: 10 — если перевести, то это будет звучать как «уровень параллелизма». О чем-нибудь говорит? Когда я увидел это впервые, мне это не говорило ни о чём. Немного поразмыслив, я предположил, что это количество одновременных запросов, которое выполнял сервер в процессе тестирования. Проделав еще несколько тестов, изменяя опцию "-cN", я понял что оказался прав.
Time taken for tests: 28.252 seconds — тестирование выполнялось в течении 28-и с лишним секунд.
Complete requests: 100 — было выполнено 100 запросов.
Failed requests: 0 — неудачно выполненных запросов было 0.
Write errors: 0 — ошибок в журнал записано не было.
Total transferred: 1404503 bytes — общее количество информации, которое было получено от сайта httpd.apache.org.
HTML transferred: 1372882 bytes — похоже, что сюда не включены изображения, флеш-анимации и прочее. Если мы поделим «HTML transferred» на «Document Length», то получим 100 с копейками, что соответствует значению выполненных запросов «Complete requests».
Requests per second: 3.54 [#/sec] (mean) — количество запросов за секунду. Это среднее значение — результат деления «Complete requests» на «Time taken for tests».
Time per request: 2825.237 [ms] (mean) — время, в течении которого выполнялись 10 параллельных запросов.
Time per request: 282.524 [ms] (mean, across all concurrent requests) — время, в течении которого выполнялся один запрос. То есть значение «Time per request», разделённое на «Concurrency Level».
Transfer rate: 48.55 [Kbytes/sec] received — скорость, с которой apache benchmark получал информацию с тестируемого сервера.
Connection Times (ms) — таблица со временем соединения в миллисекундах. Здесь мы имеем таблицу с четырьмя строчками и четырьмя столбцами:
Строка Connect: — время, которое потратила утилита на соединение с сервером.
Строка Processing: — время выполнения запроса.
Строка Waiting: — время простоя запроса. То есть время, которое запрос ждал своей очереди для выполнения.
Строка Total: — общее время по строкам.
Столбец min — минимальное время.
Столбец mean[±sd] — по этому столбцу, к сожалению, информации не имею. Если, у кого-то есть сведения по нему, пожалуйста, поделитесь.
Cтолбец median — среднее время.
Стобец max — максимальное время.
Исходя из результатов тестирования видно, что самый быстрый запрос был выполнен за 1.194 секунды, а самый медленный за 10.614 секунд.
Percentage of the requests served within a certain time (ms) — доля запросов, выполненных в определенное время. То есть 80 процентов всех запросов выполнились в течении 2-х с небольшим секунд. А самый долгий запрос выполнялся 10 с лишним секунд.
Итоги: На мой взгляд особого внимания заслуживают: Requests per second, а также min и max значения таблицы Connection Times (ms). Опираясь на эти данные, мы можем сказать, что сайт «httpd.apache.org» при нагрузке в 10 одновременно зашедших на сайт посетителей, загрузит страницу в лучшем случае за 1.194 секунды, в худшем за 10.614 секунд. Конечно, для полной оценки работы сервера нужно проводить несколько тестов, изменяя опции "-cN" и "-nN". Таким образом можно увидеть, как изменяются показатели сервера в зависимости от нагрузки.
Прочитав документацию, я решил опробовать утилиту в действии, а в качестве подопытного использовать сайт самих разработчиков apache. После того как я прописал в консоль «ab -c10 -n100 httpd.apache.org/», мне сообщили что «httpd.apache.org» бенчмаркетится (benchmarkering), что если верить словарю переводится как «тестируется». Также мне посоветовали быть терпеливым, что я собственно и сделал. Спустя некоторое время, утилита выдала информацию о результатах своего труда. Должен признать, что увидев данную таблицу впервые, я не понял ровным счетом ничего, и вынести для себя какую-то полезную информацию было достаточно тяжело. Потратив некоторое время я, конечно, во всем разобрался, и сейчас хочу поделиться тем, как я понимаю то, о чем нам говорит «apache benchmark».
Итак, результаты тестирования были следующими:
Вначале все предельно понятно:
Server Software: Apache/2.3.8 — установлен сервер Apache (вот было бы весело если бы было по другому) версии 2.3.8.
Server Hostname: httpd.apache.org — имя сервера хостинга httpd.apache.org.
Server Port: 80 — при тестировании использовался 80-й порт.
Document Path: / — путь к документу. В нашем случае — основная директория.
Document Length: 13666 bytes — размер документа — 13,6Кб. Причем, это размер не учитывающий встроенные элементы, например, изображения. Сохранив страницу на локальный компьютер, можно увидеть, что на странице размещены два изображения общим размером 18Кб, а вот сам html файл страницы весит приблизительно 14Кб.
Concurrency Level: 10 — если перевести, то это будет звучать как «уровень параллелизма». О чем-нибудь говорит? Когда я увидел это впервые, мне это не говорило ни о чём. Немного поразмыслив, я предположил, что это количество одновременных запросов, которое выполнял сервер в процессе тестирования. Проделав еще несколько тестов, изменяя опцию "-cN", я понял что оказался прав.
Time taken for tests: 28.252 seconds — тестирование выполнялось в течении 28-и с лишним секунд.
Complete requests: 100 — было выполнено 100 запросов.
Failed requests: 0 — неудачно выполненных запросов было 0.
Write errors: 0 — ошибок в журнал записано не было.
Total transferred: 1404503 bytes — общее количество информации, которое было получено от сайта httpd.apache.org.
HTML transferred: 1372882 bytes — похоже, что сюда не включены изображения, флеш-анимации и прочее. Если мы поделим «HTML transferred» на «Document Length», то получим 100 с копейками, что соответствует значению выполненных запросов «Complete requests».
Requests per second: 3.54 [#/sec] (mean) — количество запросов за секунду. Это среднее значение — результат деления «Complete requests» на «Time taken for tests».
Time per request: 2825.237 [ms] (mean) — время, в течении которого выполнялись 10 параллельных запросов.
Time per request: 282.524 [ms] (mean, across all concurrent requests) — время, в течении которого выполнялся один запрос. То есть значение «Time per request», разделённое на «Concurrency Level».
Transfer rate: 48.55 [Kbytes/sec] received — скорость, с которой apache benchmark получал информацию с тестируемого сервера.
Connection Times (ms) — таблица со временем соединения в миллисекундах. Здесь мы имеем таблицу с четырьмя строчками и четырьмя столбцами:
Строка Connect: — время, которое потратила утилита на соединение с сервером.
Строка Processing: — время выполнения запроса.
Строка Waiting: — время простоя запроса. То есть время, которое запрос ждал своей очереди для выполнения.
Строка Total: — общее время по строкам.
Столбец min — минимальное время.
Столбец mean[±sd] — по этому столбцу, к сожалению, информации не имею. Если, у кого-то есть сведения по нему, пожалуйста, поделитесь.
Cтолбец median — среднее время.
Стобец max — максимальное время.
Исходя из результатов тестирования видно, что самый быстрый запрос был выполнен за 1.194 секунды, а самый медленный за 10.614 секунд.
Percentage of the requests served within a certain time (ms) — доля запросов, выполненных в определенное время. То есть 80 процентов всех запросов выполнились в течении 2-х с небольшим секунд. А самый долгий запрос выполнялся 10 с лишним секунд.
Итоги: На мой взгляд особого внимания заслуживают: Requests per second, а также min и max значения таблицы Connection Times (ms). Опираясь на эти данные, мы можем сказать, что сайт «httpd.apache.org» при нагрузке в 10 одновременно зашедших на сайт посетителей, загрузит страницу в лучшем случае за 1.194 секунды, в худшем за 10.614 секунд. Конечно, для полной оценки работы сервера нужно проводить несколько тестов, изменяя опции "-cN" и "-nN". Таким образом можно увидеть, как изменяются показатели сервера в зависимости от нагрузки.
0 комментариев