Как сравнить веб-сайт с Firefox, Siege и Sproxy в Ubuntu 16.04

Вступление

Siege - это настраиваемый инструмент для тестирования и тестирования веб-сайтов, который проверяет веб-серверы, отправляя запросы на веб-страницы. Количество страниц в секунду, которое запрашивает Siege, может быть установлено от нескольких страниц в секунду до максимального числа, которое может обрабатывать веб-сайт.

Эта информация чрезвычайно полезна для выявления узких мест в производительности, выделяя, какой ресурс сервера исчерпан первым и на каком уровне трафика. Вооружившись этой информацией, вы можете вносить изменения в конфигурацию сервера или модернизировать аппаратное обеспечение сервера до того, как сайт выйдет из строя. Кроме того, общие процедуры системного администрирования, такие как резервное копирование, могут быть протестированы при моделируемой нагрузке, чтобы определить их влияние на производительность веб-сайта.

В этом руководстве мы установим и настроим Siege для работы в режиме бенчмаркинга и просмотра. Режим бенчмаркинга отправляет столько запросов, сколько может обработать веб-сервер, а режим просмотра имитирует настраиваемое количество посетителей сайта.

Поскольку настройка подключения к Интернету через прокси-сервер особенно проста в Firefox, мы будем использовать его для подключения к Интернету через прокси-сервер Sproxy. Sproxy, который был специально создан для работы с Siege, записывает URL-адрес каждого запроса, который проходит через него, в файл. Мы будем использовать этот файл, чтобы сообщить Siege, с какими URL-адресами проводить тестирование.

В первой части этого руководства мы установим Sproxy и настроим Firefox для подключения к Интернету через него. Оттуда мы создадим список URL-адресов, с которыми будет проверяться Siege, и, наконец, мы проверим результаты теста и выявим узкие места производительности.

Предпосылки

Для завершения этого урока вам понадобится:

  • Один сервер Ubuntu 16.04, настроенный по следующему адресу: https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04: это руководство по начальной настройке Ubuntu 16.04], включая sudo пользователь root и брандмауэр. Обязательно откройте порт + 8080 + в ссылке: # step-7-% E2% 80% 94-creation-siege’s-results [Шаг 7] из учебника по начальной настройке сервера с помощью команды `+ sudo ufw allow 8080+ `. Это порт, который Sproxy прослушивает по умолчанию.

  • Firefox установлен. Если вы используете macOS или Windows на локальном компьютере, вам следует загрузить установочный файл с official веб-сайта Mozilla. Если вы используете Linux, вы должны использовать менеджер пакетов или следовать Mozilla официальным инструкциям, чтобы установить Firefox. В этом руководстве приведены инструкции по работе с Firefox версии 56.

  • Веб-сайт, которым вы владеете или у которого есть разрешение на тестирование, является либо общедоступным, либо доступ к которому вы можете сделать доступным с сервера, на котором установлена ​​Siege.

Шаг 1 - Сборка и установка Sproxy

Sproxy недоступен в виде готового бинарного файла, поэтому вам придется скачать его с официального сайта, а затем собрать его из исходного кода.

Поскольку процесс сборки Sproxy основан на инструментах, которые по умолчанию не установлены в Ubuntu, вам необходимо установить некоторые дополнительные пакеты.

Сначала обновите список пакетов, чтобы убедиться, что вы получаете последнюю версию каждого дополнительного пакета.

sudo apt-get update

Затем установите пакеты.

sudo apt-get install build-essential libnet-ssleay-perl liburi-perl libwww-perl

+ build-essential + предоставляет общие библиотеки и инструменты, необходимые для сборки программного обеспечения в дистрибутивах Linux на основе Debian, в то время как + libnet-ssleay-perl +, + liburi-perl + и + libwww-perl + являются библиотеками для языка программирования Perl, от которого Sproxy зависит, чтобы устанавливать соединения через SSL, манипулировать строками URI и взаимодействовать со Всемирной паутиной.

Теперь перейдите в свой домашний каталог и загрузите архив исходного кода Sproxy со своего официального сайта.

cd ~
curl -O http://download.joedog.org/sproxy/sproxy-latest.tar.gz

Затем создайте каталог с именем + sproxy + для сборки Sproxy и распакуйте архив с исходным кодом в новый каталог.

mkdir sproxy
tar -zxf sproxy-latest.tar.gz --strip-components=1 --directory="sproxy"

Здесь опция + -zxf + сообщает tar + gunzip + и извлекает содержимое файла + sproxy-latest.tar.gz +. Опция + - strip-components = 1 + удаляет первый начальный компонент из каждого имени файла. Это распаковывает архив в каталог + sproxy + - указанный параметром + - directory + - а не в + sproxy- / sproxy / +.

Теперь перейдите в каталог + sproxy + для сборки и установки Sproxy с помощью команд + configure + и + make +.

cd sproxy
./configure
make
sudo make install

Команда +. / Configure + проверяет, что в системе присутствуют все необходимые программные зависимости и инструменты сборки. Команда + make + затем создает двоичные файлы программы. Наконец, команда + make install + копирует новые двоичные файлы в их правильные расположения на сервере. Поскольку Sproxy создает новый каталог в + / usr / local / lib / sproxy / JoeDog +, вам нужно запустить + make install + с правами root.

Наконец, проверьте, что Sproxy работает правильно, вернувшись в свой домашний каталог, чтобы запустить Sproxy в подробном режиме с опцией + -v +.

cd ~
sproxy -v

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

Sproxy OutputSPROXY v1.02 listening on port 9001
...appending HTTP requests to: /user/urls.txt
...default connection timeout: 120 seconds

Если Sproxy не запускается, просмотрите сообщения в вашем терминале для получения информации о том, что пошло не так.

Убедившись, что все работает, остановите Sproxy с помощью + CTRL + C +.

Sproxy теперь готов к использованию, поэтому давайте изменим Firefox для подключения к Интернету через Sproxy, чтобы составить список URL-адресов для сравнения с Siege.

Шаг 2 - Настройка Firefox для использования Sproxy

Теперь мы изменим сетевую конфигурацию Firefox, чтобы отправлять все веб-запросы через Sproxy, создавая список целей для тестирования, которые нам понадобятся для Siege.

Поскольку мы хотим, чтобы Sproxy записывал каждый посещенный нами URL, мы также очистим локальный веб-кеш Firefox. Веб-кеш - это локальное хранилище изображений и другого статического контента с сайтов, которые Firefox уже посетил. По умолчанию Firefox не повторно запрашивает ресурсы сайта, которые он уже кэшировал.

Изменение настроек сети

Сначала измените настройки * Network Proxy * на вкладке * General * на главном экране Firefox * Preferences *.

  1. Откройте Firefox. (Это руководство содержит инструкции для * Firefox версии 56 *. Для других версий см. Https://support.mozilla.org/en-US/kb/connection-settings-firefox[Firefox официальную документацию поддержки].)

  2. Нажмите на меню гамбургера в верхнем правом углу экрана и выберите * Предпочтения *, чтобы перейти на экран * Общие *.

  3. Прокрутите страницу вниз и найдите раздел * Сетевой прокси *.

  4. Нажмите кнопку * Настройки… *, чтобы открыть панель * Настройки подключения *.

изображение: http: //assets.digitalocean.com/articles/benchmarking-with-siege/firefox-network-proxy.png [изображение, показывающее кнопку для выбора настроек прокси]

На этой панели настройте Firefox для передачи всех его запросов через прокси-сервер, который вы установили по ссылке: # step-1-% E2% 80% 94-building-and-installation-sproxy [Шаг 1].

  1. Выберите * Ручная настройка прокси *.

  2. Введите публичный IP-адрес вашего сервера Sproxy в поле * HTTP Proxy *.

  3. Установите номер порта на + 8080 + в поле * Port *.

  4. Нажмите * OK *, чтобы сохранить изменения.

изображение: http: //assets.digitalocean.com/articles/benchmarking-with-siege/firefox-connection-settings.png [Изображение, показывающее панель настроек подключения Firefox с заполненными полями]

Теперь вы настроили Firefox для использования вашего прокси-сервера Sproxy HTTP, так что вы готовы очистить локальный кеш.

Очистка локального кэша

Firefox ссылается на локальный кеш как * автономный веб-контент *. Он находится в разделе * Конфиденциальность и безопасность * экрана * Настройки * в Firefox.

  1. Нажмите на меню гамбургера в верхнем правом углу экрана и выберите * Предпочтения *, чтобы перейти на экран * Общие *.

  2. Нажмите * Конфиденциальность и безопасность * в левой части экрана.

  3. Прокрутите страницу до конца, найдите раздел «Автономный веб-контент и пользовательские данные *» и нажмите кнопку «Очистить сейчас».

изображение: http: //assets.digitalocean.com/articles/benchmarking-with-siege/firefox-offline-web-content.png [изображение, показывающее кнопку очистки кэша]

Ваш веб-кеш теперь пуст, поэтому адрес каждого актива веб-сайта на основе HTTP, с которым сталкивается Firefox, будет передаваться в Sproxy до тех пор, пока этот ресурс не будет повторно кэширован.

Тестирование конфигурации

Firefox теперь настроен на маршрутизацию всех HTTP-запросов через Sproxy, но вы остановили Sproxy с помощью + CTRL + C + в конце ссылки: # step-1-% E2% 80% 94-building-and-installation-sproxy [Шаг 1]. Таким образом, вы увидите страницу с ошибкой, если вы попытаетесь зайти на сайт через HTTP-соединение с Firefox прямо сейчас.

изображение: http: //assets.digitalocean.com/articles/benchmarking-with-siege/firefox-refusing-connections.png [изображение, показывающее сообщение об ошибке Firefox]

Если вы не видите это сообщение об ошибке, убедитесь, что ваши настройки Firefox соответствуют предыдущим снимкам экрана, и еще раз проверьте, что вы не подключаетесь к веб-сайту через HTTPS.

Когда вы захотите снова использовать Firefox снова, проследите предыдущие инструкции для ссылки: # step-2-% E2% 80% 94-configuring-firefox-to-use-sproxy [Изменение параметров сети], но на этот раз выберите параметр * Без прокси * на панели * Параметры подключения *.

Теперь, когда мы настроили Firefox для подключения к Интернету через Sproxy, мы можем создать список URL-адресов, запустив Sproxy и просматривая целевой веб-сайт с помощью Firefox.

Шаг 3 - Запуск Sproxy и создание списка URL

На этом этапе мы запустим Sproxy-сервер и будем использовать Firefox для просмотра целевого веб-сайта. Sproxy будет записывать каждый HTTP-URL, который Firefox запрашивает, в файл, который мы будем использовать позже с Siege.

Сначала перейдите в свой домашний каталог и запустите Sproxy.

cd ~
sproxy -v -t 180 -p 8080 -o mixed-urls.txt
  • + -v + печатает URL-адреса, запрашиваемые в терминале.

  • + -t + - количество секунд, в течение которых Sproxy будет ожидать ответа от удаленного хоста.

  • + -p + - это порт, который Sproxy будет прослушивать.

  • + -o + - это файл, в который Sproxy запишет URL-адреса.

  • ++ - это IP-адрес, с которым Sproxy будет связываться.

Вывод немедленно сообщает вам версию Sproxy, которую вы используете, порт, который слушает Sproxy, файл, на который Sproxy записывает URL-адреса, и количество времени, в течение которого Sproxy будет ожидать ответа от удаленного хоста. После того, как вы начнете просматривать тестовый веб-сайт, выходные данные будут также включать URL-адреса веб-страниц, которые записывает Sproxy.

Sproxy OutputSPROXY v1.02 listening on port 8080
...appending HTTP requests to: mixed-urls.txt
...default connection timeout: 180 seconds
http:///
http:///index.html
http:///about.html

После того, как вы запустили Sproxy, вернитесь в Firefox и начните просмотр целевого сайта. Sproxy запишет каждый URL, который Firefox запрашивает в файл + mixed-urls.txt +, одновременно печатая URL-адреса в терминал.

После посещения всех веб-страниц, которые вы планируете тестировать, остановите Sproxy с помощью + CTRL + C +.

Теперь у вас есть список в файле + mixed-urls.txt + каждого URL-адреса на основе HTTP, который Firefox обнаружил на тестовом веб-сайте. Следующим шагом является удаление любых URL-адресов, которые не разрешены на вашем сайте, чтобы убедиться, что вы используете Siege только для авторизованных доменов.

Шаг 4 - Санитарная обработка файла URL

Современные веб-сайты часто размещают контент в нескольких местах. Это может быть изображение, размещенное в сети доставки контента (CDN), или шрифты, размещенные в стороннем сервисе, таком как Google. Когда мы запускаем Siege, мы хотим убедиться, что мы используем только те домены, на которые у нас есть разрешение на тестирование. Следовательно, мы должны удалить все URL-адреса в файле + mixed-urls.txt +, которые не указывают на целевой веб-сайт.

Используйте grep, утилиту для поиска простого текстового ввода против пользователя. указанные regular выражения, чтобы найти только те URL-адреса, которые соответствуют вашему тестовому домену и https://www.digitalocean.com/ сообщество / учебные пособия / введение-в-linux-io-redirection # stream-redirection [перенаправить результаты] в новый файл с именем + urls.txt +.

grep -a "^http://" mixed-urls.txt > urls.txt

Флаг + -a + указывает grep обрабатывать двоичный файл как текстовый файл. Это необходимо, потому что браузеры иногда делают POST-запросы, содержащие двоичные данные, которые Sproxy записывает в + mixed-urls.txt +. Если в + mixed-urls.txt + есть двоичные данные, grep завершится ошибкой без флага + -a +.

В терминах регулярного выражения символ + ^ + указывает, что строки должны начинаться с + http: // +, чтобы считаться совпадением.

Эта команда не выдаст никакого вывода в терминале, но она создаст новый файл с именем + urls.txt +.

Теперь откройте + urls.txt +, чтобы каждая строка начиналась с имени домена вашего тестового веб-сайта, и удалите все строки, которые этого не делают.

nano urls.txt

Сохраните изменения и закройте файл, когда закончите редактирование.

Ваш список URL-адресов теперь содержит только те URL-адреса, которые вы имеете право тестировать, поэтому мы готовы установить Siege. Если вы также хотите сравнить свой веб-сайт с помощью HTTPS, следуйте дополнительным инструкциям в ссылке: # step-5-% E2% 80% 94-creation-an-https-url-file- (необязательно) [Шаг 5], чтобы создать второй файл URL, который содержит HTTPS-версии ваших URL-адресов.

Шаг 5 - Создание файла URL HTTPS (необязательно)

Многие веб-сайты работают как по HTTP, так и по HTTPS или даже исключительно по HTTPS, поэтому важно, чтобы вы также могли сравнивать свой веб-сайт с HTTPS. Это то, что Siege может сделать. Вам нужно только указать список URL-адресов, начинающихся с + https +.

Сначала используйте команду + cat +, чтобы открыть + urls.txt + и передать ее содержимое в утилиту sed для анализа и преобразования текста. sed заменит все экземпляры + http на` + https` и отобразит результаты в терминале.

cat urls.txt | sed 's|http|https|'

Вывод будет таким же списком URL, который у вас уже есть в файле + urls.txt +, за исключением того, что каждый из выведенных URL будет начинаться с + https +.

Example Output:///
:///index.html
:///about.html

После того как вы проверили вывод, повторите команду, на этот раз записав вывод в новый файл с именем + urls-https.txt +.

cat urls.txt | sed 's|http|https|'

Эта команда не будет выводить данные на терминал, поскольку все они были перенаправлены в + urls-https.txt +.

Теперь, когда у нас есть обновленный список URL-адресов, мы готовы установить Siege и начать тестирование.

Шаг 6 - Бенчмаркинг и тестирование с осадой

Прежде чем вы сможете начать тестирование своего сайта, вы должны сначала установить Siege.

Siege доступен в стандартных репозиториях пакетов Ubuntu, чтобы установить его с помощью + apt-get.

sudo apt-get install siege

Siege имеет два режима работы: интернет и бенчмарк. Режим Интернета имитирует посетителей, просматривающих целевой веб-сайт, а режим бенчмарка делает запросы настолько быстрыми, насколько может обрабатывать веб-сервер. Сначала мы запустим Siege в интернет-режиме.

Интернет-режим хорош для медленного наращивания нагрузки на сервер за счет увеличения количества одновременных посетителей с течением времени. Этот режим также может создавать устойчивую нагрузку в течение длительного периода, что полезно, если вам необходимо выяснить, что происходит с производительностью вашего веб-сайта во время таких операций, как создание резервных копий.

Перейдите в свой домашний каталог и запустите Siege в режиме Интернета. Если вы хотите протестировать адреса только для HTTP, замените ` на `+ urls.txt +`. Если вы перешли по ссылке: # step-5-% E2% 80% 94-creation-an-https-url-file- (необязательно) [Шаг 5] и хотели бы проверить адреса HTTPS, замените ` на ` +-адрес https.txt + `.

cd ~
siege --internet --concurrent=5 --time=30S --log="siege-internet.log" --file=""
  • + - интернет + устанавливает осаду в интернет-режим

  • + - concurrent + - количество посетителей для симуляции. В этом примере мы сказали Siege смоделировать 5 одновременно работающих пользователей, чтобы генерировать некоторый трафик, не перегружая сервер. По мере знакомства с возможностями вашего сервера вы можете увеличивать это число по мере необходимости.

  • «+ - время » - это то, как долго будет работать осада. Это значение может быть установлено с помощью ` S ` для секунд, ` M ` для минут и ` H +` для часов. В этом примере мы попросили Siege работать в течение 30 секунд, снова, чтобы генерировать некоторый трафик, не перегружая сервер. В будущем вы можете поэкспериментировать с различными отрезками времени, чтобы увидеть, как ваш сервер реагирует на постоянную нагрузку трафика.

  • + - log + - это путь к месту, куда вы хотите, чтобы Siege записала результаты своего теста. По умолчанию это местоположение + / var / log / siege.log + и требует привилегий sudo.

  • + - file + - это путь к файлу, содержащему URL, которые Siege будет использовать для теста.

Когда вы в первый раз запускаете Siege, он сообщает номер используемой вами версии и количество одновременно имитируемых пользователей. Затем он сообщает, что тест начался.

Siege Output at Start of Run** SIEGE 3.0.8
** Preparing 5 concurrent users for battle.
The server is now under siege...

После того, как Siege завершит свой запуск или завершится с помощью + CTRL + C +, он также отобразит результаты теста вместе с расположением файла журнала результатов.

Siege Output at End of Run...
Lifting the server siege...      done.

Transactions:                    157 hits
Availability:                 100.00 %
Elapsed time:                  29.72 secs
Data transferred:               0.15 MB
Response time:                  0.49 secs
Transaction rate:               5.28 trans/sec
Throughput:                     0.01 MB/sec
Concurrency:                    2.59
Successful transactions:         161
Failed transactions:               0
Longest transaction:            0.74
Shortest transaction:           0.27

FILE: siege-internet.log
You can disable this annoying message by editing
the .siegerc file in your home directory; change
the directive 'show-logfile' to false.

Поскольку статистические данные, включенные в выходные данные, являются сложными, мы рассмотрим их подробно в ссылке: # step-7-% E2% 80% 94-смысл-осады-результаты [Шаг 7].

Теперь давайте запустим Siege в режиме бенчмарка, чтобы определить максимальное количество запросов страниц, которые может обслуживать сайт за один раз. Это полезная информация, когда вы пытаетесь решить, какие дополнительные технологии могут улучшить производительность вашего сайта. Кроме того, в режиме тестирования можно выделить узкие места в ресурсах, как вы увидите, когда мы более подробно рассмотрим этот режим в ссылке: # step-8-% E2% 80% 94-идентификации-узкие места производительности [Шаг 8].

Снова запустите Siege, на этот раз в режиме тестирования, используя + - benchmark вместо` + - internet`.

siege --benchmark --time=30S --log="siege-benchmark.log" --file=""

Выходные данные имеют тот же формат, что и раньше, за исключением того, что на этот раз результаты отличаются, потому что режим был другим.

Siege Output** SIEGE 3.0.8
** Preparing 5 concurrent users for battle.
The server is now under siege...
Lifting the server siege...      done.

Transactions:                    444 hits
Availability:                 100.00 %
Elapsed time:                  29.72 secs
Data transferred:               18.16 MB
Response time:                  0.49 secs
Transaction rate:               105.28 trans/sec
Throughput:                     4.41 MB/sec
Concurrency:                    14.14
Successful transactions:         421
Failed transactions:               0
Longest transaction:            0.74
Shortest transaction:           0.27

FILE: siege-benchmark.log
You can disable this annoying message by editing
the .siegerc file in your home directory; change
the directive 'show-logfile' to false.

Как и в случае статистики из интернет-режима, статистика из эталонного режима является сложной. Мы рассмотрим их подробно в ссылке: # step-7-% E2% 80% 94-смысл-осады-результаты [Шаги 7] и ссылка: # step-8-% E2% 80% 94-идентификации-производительность- узкие места [8].

Теперь, когда мы протестировали и протестировали ваш сайт с помощью Siege, мы можем более подробно изучить результаты и использовать статистические данные на практике.

Шаг 7 - Понимание результатов осады

Когда дело доходит до понимания производительности вашего веб-сайта, выявления узких мест и определения того, на чем следует сосредоточить усилия по обновлению, Siege может стать мощным преимуществом. Предоставляемая статистика охватывает ряд показателей, которые могут дать вам глубокое понимание общего состояния вашего веб-сайта.

Как мы видели в ссылке: # step-6-% E2% 80% 94-тестирование и тестирование с осадой [Шаг 6], выходные данные Siege обычно выглядят следующим образом:

Siege Output at End of Run...
Transactions:                    904 hits
Availability:                  97.41 %
Elapsed time:                   4.59 secs
Data transferred:               4.37 MB
Response time:                  0.07 secs
Transaction rate:             196.95 trans/sec
Throughput:                     0.95 MB/sec
Concurrency:                   12.86
Successful transactions:         904
Failed transactions:              24
Longest transaction:            1.95
Shortest transaction:           0.00
...

В частности, эти показатели означают:

  • + Transactions + - это общее количество запросов, выполненных Siege.

  • + Availability + - это процент запросов, на которые веб-сервер ответил, включая https://www.digitalocean.com/community/tutorials/how-to-troubleshoot-common-http-error-codes#400-bad- запрос [коды ошибок уровня 4xx и 5xx].

  • «+ Истекшее время +» - это время выполнения теста.

  • + Переданные данные + - общая пропускная способность, используемая Siege для тестирования сайта.

  • «+ Время отклика» - это среднее время, которое веб-сервер потребовал, чтобы ответить на запрос.

  • + Transaction rate + - это среднее количество транзакций в секунду, которое обслуживал веб-сервер.

  • + Throughput + - количество данных в секунду, которое обслуживал веб-сервер.

  • + Concurrency + - среднее количество открытых одновременных соединений.

  • + Успешных транзакций + - это общее количество транзакций, на которые был получен ответ с помощью HTTP[ code] менее 400

  • + Неудачные транзакции + - это общее количество транзакций, на которые были получены ответы с помощью HTTP-кодов состояния https://www.digitalocean.com/community/tutorials/how-to-troubleshoot-common-http-error-codes#400-bad -запрос [больше 400].

  • + Самая длинная транзакция + ​​- время, которое потребовалось для выполнения самого длинного запроса.

  • + Самая короткая транзакция + ​​- это время, которое потребовалось для выполнения самого короткого запроса.

+ Скорость транзакций + и + Неудачные транзакции + обеспечивают самый быстрый лакмусовый тест общего состояния вашего веб-сервера.

+ Transaction rate + представляет скорость вашего сайта, так как это число страниц в секунду, которое может обслуживать ваш веб-сервер. Чем выше это число, тем больше посетителей сможет обработать ваш сайт и тем быстрее посетители получат каждую страницу. Если вы используете Siege для улучшения общего отклика вашего сайта, это число, которое вы хотите увеличить.

Значение «+ Неудачные транзакции +» относится к любому ответу от веб-сервера, содержащему код ошибки, например, «+503 Сервис недоступен +». Эти ошибки часто указывают на такие проблемы, как база данных, которая не может обработать количество запросов, которые она получает, или веб-сервер, на котором не хватает оперативной памяти. Если это число отличное от нуля, вы должны просмотреть файлы журналов вашего веб-сервера, чтобы точно определить, какие ошибки произошли, и получить указания о том, как решить проблемы.

Когда вы вносите изменения, чтобы увеличить + Транзакционную ставку + и уменьшить ваши + Неудачные транзакции + с течением времени, также не забывайте сверяться с файлом журнала, который вы создаете при каждом запуске Siege, поскольку он включает в себя все те же статистические данные, которые вы видите в своем терминал, а также дата и время проведения теста. Это поможет вам отслеживать общую траекторию ваших усилий.

Теперь, когда мы проверили выходные данные Siege для определения скорости и надежности вашего веб-сервера, пришло время посмотреть, как мы можем использовать эту же информацию для выявления и устранения узких мест в производительности.

Шаг 8 - Выявление узких мест в производительности

В режиме тестирования Siege делает столько запросов в секунду, сколько способен обслуживать веб-сервер. Когда сервер достигает максимального количества страниц, которые он может обслуживать, он достигает предела resource.

Четыре наиболее вероятных ресурса, которые будут затронуты:

  1. RAM

  2. CPU

  3. Disk

  4. Пропускная способность сети

Чтобы получить максимальную отдачу от эталонного режима, вам необходимо запустить несколько дополнительных инструментов одновременно с Siege, чтобы вы могли отслеживать, что происходит в вашей системе, когда Siege увеличивает нагрузку на тест.

Вы можете контролировать первые три ресурса - RAM, CPU и использование диска - с помощью top, инструмента, который обеспечивает динамическое представление системных ресурсов в режиме реального времени.

Ubuntu поставляется с top по умолчанию, поэтому вам не нужно его устанавливать. Просто запустите команду + top +.

Информация, показанная сверху, разделена на две части.

Sample top Outputtop - 21:02:32 up 50 min,  1 user,  load average: 0.07, 0.02, 0.00
Tasks: 102 total,   1 running, 101 sleeping,   0 stopped,   0 zombie
 0.0 ni, 99.3 id,  8.3 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   1015200 total,    63536 free,    431456 used,   520208 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   512308 avail Mem

 PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
3249 www-data     20   0   469592   92276   33488 D  24.6  9.1   0:05.01 apache2
3239 www-data     20   0   442836   75080   41896 S  5.6  7.4   1:31.97 apache2
3572 www-data     20   0   424372   35272   21164 S  4.0  3.5   0:02.69 apache2

Верхний раздел, состоящий из первых пяти строк вывода, показывает сводку текущего использования системы.

В нижней части приведен список отдельных серверных процессов, запущенных в настоящее время в системе, а также идентификационный номер каждого процесса, владелец, приоритет, полезное значение, использование виртуальной памяти, использование физической памяти, использование общей памяти, состояние, процент использования ЦП, процент использования памяти, общее время активности и имя.

В то время как top - это полезный инструмент для процессов управления https://www.digitalocean.com/community/tutorials/how-to-use-ps-kill-and-nice-to-manage-processes-in-linux] и https : //www.digitalocean.com/community/tutorials/how-to-monitor-cpu-use-on-digitalocean-droplets#monitoring-the-cpu [мониторинг использования ЦП], в данном случае мы хотим посмотреть, что это можете рассказать нам о нашей системе под давлением тестов Siege.

Использование ЦП гласит: «+% ЦП (ов): 37,3 мкс, 7,3 sy, +`. Эти значения говорят нам, что пользовательские процессы потребляют 37,3% ЦП, а системные процессы - 7,3%. Если вы сложите эти два значения вместе, вы получите общее использование процессора.

Если ваш сервер работает с или почти на 100% использует процессор, проверьте верхние записи в списке процессов, чтобы увидеть, потребляет ли один или несколько процессоров необычно большие объемы процессора. Если это так, рассмотрите возможность перенастройки или тонкой настройки процессов, чтобы использовать меньше ресурсов процессора. Если это невозможно, вам может потребоваться обновить процессор на вашем сервере.

Теперь давайте рассмотрим использование памяти.

Sample top Outputtop - 21:02:32 up 51 min,  1 user,  load average: 0.21, 0.47, 0.80
Tasks: 102 total,   1 running, 101 sleeping,   0 stopped,   0 zombie
%Cpu(s):  17.4 us,  3.4 sy,  0.0 ni, 79.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :       223.914 free,    395.621 used,   371.871 buff/cache
MiB Swap:        0.000 total,        0.000 free,        0.000 used.

 PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
3249 www-data     20   0   469592   92276   33488 D  24.6  9.1   0:05.01 apache2
3239 www-data     20   0   442836   75080   41896 S  5.6  7.4   1:31.97 apache2
3572 www-data     20   0   424372   35272   21164 S  4.0  3.5   0:02.69 apache2

По умолчанию использование оперативной памяти отображается в килобайтах в четвертой строке. В выводе предыдущего примера мы уже нажимали один раз + SHIFT + E +, преобразуя значение в мегабайты, чтобы было легче работать с числами. Нажмите + SHIFT + E + второй раз, чтобы преобразовать значение в гигабайты, и продолжайте нажимать + SHIFT + E +, чтобы вернуться к отображению килобайтов по умолчанию.

Значение + total + - это общий объем памяти, доступной на сервере. Имейте в виду, что ядро ​​резервирует некоторую память при загрузке, поэтому машина с 1024 МБ будет отображать здесь 991 МБ памяти.

+ Vend Mem + показывает объем оставшейся памяти в системе. Это число будет уменьшаться по мере использования большего объема ОЗУ и в конечном итоге достигнет нуля, когда на сервере не останется свободной памяти.

Как и в случае использования процессора, если + vend Mem + работает с нулевым или близким к нему значением, проверьте список процессов на предмет записей, которые занимают необычно большие объемы памяти. Если возможно, переконфигурируйте или отрегулируйте эти процессы, чтобы использовать меньше памяти или увеличить объем оперативной памяти на вашем сервере.

Наконец, давайте посмотрим на использование диска.

Sample top Outputtop - 21:02:32 up 52 min,  1 user,  load average: 0.21, 0.47, 0.80
Tasks: 102 total,   1 running, 101 sleeping,   0 stopped,   0 zombie
%Cpu(s):  17.4 us,  3.4 sy,  0.0 ni, 79.2 id,    0.0 hi,  0.0 si,  0.0 st
KiB Mem :   1015200 total,    63536 free,    431456 used,   520208 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   512308 avail Mem

 PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
3249 www-data     20   0   469592   92276   33488 D  24.6  9.1   0:05.01 apache2
3239 www-data     20   0   442836   75080   41896 S  5.6  7.4   1:31.97 apache2
3572 www-data     20   0   424372   35272   21164 S  4.0  3.5   0:02.69 apache2

Использование диска, которое нас интересует, ожидание ввода / вывода, зависит не от того, сколько дискового пространства доступно, а от того, насколько доступ к диску замедляет работу сервера. Доступ к диску, особенно на сервере, который использует вращающиеся жесткие диски, очень медленный, и всякий раз, когда сервер обращается к дискам, ЦП должен ждать получения информации.

Top сообщает эту информацию как значение + wa +. Он указывает процент времени, в течение которого центральный процессор (ы) бездействует в ожидании данных с диска. Это число должно быть как можно ближе к 0.0.

В предыдущем примере значение + wa + равно + 31,6 +. Это означает, что процессор тратит треть своего времени в ожидании данных с диска. Это большой промежуток времени, и он сильно повлияет на производительность сайта.

Ожидание ввода-вывода часто является результатом доступа к диску для файлов или повторных обращений к локальным базам данных. Если + wa + намного больше 0,0, рассмотрите возможность перемещения статических ресурсов в удаленное местоположение, например сеть доставки контента (CDN), или исследуйте способы уменьшения количества поездок, которые ваши приложения совершают в связанные с ними локальные базы данных.

Нажмите + Q + для выхода из верхней части.

Последний ресурс, который мы рассмотрим, это использование сети. Для мониторинга мы будем использовать инструмент Bandwidth Monitor New Generation.

Установите этот инструмент с помощью + apt-get, затем запустите его с помощью команды` + bmw-ng + `.

sudo apt-get install bwm-ng
bwm-ng

Верхняя часть вывода отображает номер версии Bandwidth Monitor New Generation, как часто данные обновляются (каждые 0,5 секунды по умолчанию), а источник входного сигнала используется для определения доступных сетевых интерфейсов (+ / proc / net / dev + по умолчанию в Linux) и отображаемая статистика (использование данных + rate + по умолчанию).

Нижняя часть вывода включает в себя таблицу, в которой сообщается количество входящих данных (+ Rx +), исходящих данных (+ Tx +) и суммарных данных (+ Total +) по сетевому интерфейсу.

Последняя строка отображает общие значения по всем сетевым интерфейсам.

Sample bwm-ng Output  bwm-ng v0.6.1 (probing every 0.500s), press 'h' for help
 input: /proc/net/dev type: rate
 -         iface                   Rx                   Tx                Total
 ==============================================================================
              lo:           0.00 KB/s            0.00 KB/s            0.00 KB/s
            eth0:          30.99 KB/s          499.11 KB/s          530.11 KB/s
 ------------------------------------------------------------------------------
           total:          30.99 KB/s          499.11 KB/s          530.11 KB/s

Когда пропускная способность сети вызывает узкое место, обычно это происходит из-за того, что + Tx + достиг максимума. Чтобы решить эту проблему, получите скорость соединения вашего сервера от вашего хостинг-провайдера и сравните ее со скоростью, показанной как + bwm-ng +. Если скорость, указанная в + bwm-ng +, постоянно равна или близка к максимальной пропускной способности, доступной вашему серверу, вам нужно будет рассмотреть вопрос об обновлении вашего хостинг-плана или переходе на другого провайдера в целом.

Нажмите + CTRL + C +, чтобы выйти из Bandwidth Monitor New Generation, когда вы закончите тестирование.

Заключение

В этом руководстве мы использовали инструмент тестирования Siege и прокси-сервер Sproxy, чтобы создать настраиваемую нагрузку на веб-сервер и довести ее до максимальной пропускной способности. Эти инструменты чрезвычайно полезны для любого развертывания веб-сайта, так как они помогают точно определить проблемы с производительностью и спланировать хорошо информированные обновления.

Для другого способа уменьшения дискового ввода-вывода и узких мест памяти, посмотрите на Varnish HTTP Cache. Varnish - это простой в использовании обратный прокси-сервер, который хранит статические ресурсы веб-сайта, снижая как объем оперативной памяти, так и дисковый ввод-вывод.

Если на вашем веб-сайте используется PHP, рассмотрите возможность установки PHP-FPM в качестве альтернативы стандартной реализации PHP. PHP-FPM снижает требования к процессору для обслуживания веб-страниц на основе PHP, тем самым ускоряя весь ваш сайт.

Related