Анализ сайта с помощью Firefox, Siege и Sproxy в Ubuntu 16.04

Siege – настраиваемый инструмент для анализа и тестирования веб-сайтов, который проверяет веб-серверы, создавая запросы на веб-страницы. Siege позволяет настраивать количество страниц, которым он будет отправлять запросы.

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

Данный мануал поможет установить и настроить Siege.

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

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

Требования

  • Сервер Ubuntu 16.04, настроенный по этому мануалу. Не забудьте открыть в брандмауэре порт Sproxy, 8080 (с помощью команды sudo ufw allow 8080).
  • Брандмауэр Firefox (в мануале используется версия 56). Если на локальной машине вы используете macOS или Windows, загрузите установку с официального сайта Mozilla. Если на локальной машине у вас Linux, следуйте официальному мануалу Mozilla.
  • Ваш сайт (или сайт, на тестирование которого у вас есть право).

1: Сборка и установка Sproxy

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

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

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

sudo apt-get update

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

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

Пакет build-essential предоставляет общие библиотеки и инструменты, необходимые для сборки программного обеспечения в 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 включает использование gunzip и извлекает содержимое файла sproxy-latest.tar.gz. Параметр -strip-components=1 удаляет первый ведущий компонент из каждого имени файла. Команда распаковывает архив в каталог sproxy, указанный в опции —directory, а не в sproxy-1.02/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 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; другие версии можно найти в официальной документации по Firefox).
  2. Откройте меню в верхнем правом углу экрана и выберите Preferences, перейдите на экран General.
  3. Прокрутите страницу до конца и найдите раздел Network Proxy.
  4. Нажмите кнопку Settings, чтобы открыть панель Connection Settings.

В этой панели настройте Firefox для передачи всех своих запросов через сервер Sproxy.

  1. Выберите Manual proxy configuration. Введите внешний IP-адрес сервера Sproxy в поле HTTP Proxy.
  2. В поле Port укажите номер порта 8080.
  3. Нажмите OK.

Теперь Firefox поддерживает прокси-сервер Sproxy.

Сброс локального кэша

В Firefox локальный кеш находится в разделе Offline web content. Он находится в разделе Privacy and Security.

  1. Откройте меню в верхнем правом углу экрана и выберите Preferences, чтобы перейти к экрану General.
  2. Нажмите Privacy & Security в левой части экрана.
  3. Перейдите в нижнюю часть страницы и найдите раздел Offline Web Content and User Data и нажмите кнопку Clear Now.

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

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

Теперь Firefox поддерживает маршрутизацию всех HTTP-запросов через Sproxy, но сервер Sproxy был остановлен. Потому сейчас вы увидите страницу ошибки, если попытаетесь посетить сайт через HTTP-соединение в Firefox.

The proxy server is refusing connections

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

Чтобы отключить поддержку прокси в Firefox, выберите опцию No proxy в панели Connection Settings.

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

3: Запуск Sproxy

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

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

cd ~
sproxy -v -t 180 -p 8080 -o mixed-urls.txt your_server_ip

  • -v выводит запрашиваемые URL-адреса в терминал.
  • -t задает количество секунд, в течение которых Sproxy будет ожидать ответа от удаленного хоста.
  • -p – это порт, который будет прослушивать Sproxy.
  • -o –файл, в котором Sproxy будет сохранять URL-адреса.
  • your_server_ip – IP-адрес, к которому привязан Sproxy.

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

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

Примечание: Sproxy не поддерживает HTTPS-соединения, поэтому вы должны просматривать свой тестовый сайт через HTTP, чтобы сгенерировать список URL-адресов. Однако Siege поддерживает HTTPS, и в разделе 5 вы узнаете, как изменить список URL-адресов, чтобы протестировать сайт по HTTP и HTTPS.

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

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

Теперь у вас есть список адресов страниц в файле mixed-urls.txt. Далее нужно удалить из списка все URL-адреса, которые не разрешаются на ваш сайт (чтобы случайно не протестировать чужую страницу).

4: Проверка списка страниц

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

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

Читайте также:

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

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

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

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

Откройте этот файл и убедитесь, что он содержит только необходимые адреса. Если в него попали неправильные ссылки, удалите их.

nano urls.txt

Сохраните изменения и закройте файл.

Теперь список содержит только те URL-адреса, которые вы можете тестировать, поэтому можно установить Siege.

Если вы хотите также протестировать свой сайт через HTTPS, следуйте дополнительным инструкциям в разделе 5, чтобы создать второй файл для списка HTTPS-версий URL-адресов.

5: Создание списка HTTPS-адресов (опционально)

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

С помощью команды cat откройте файл urls.txt и передайте его содержимое в sed (это утилита для обработки и преобразования текста). Утилита sed заменит все вхождения http на https и выведет результат в терминал.

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

Вывод будет совпадать со списком URL-адресов файла urls.txt, но использовать https вместо http.

https://www.example.com/
https://www.example.com/index.html
https://www.example.com/about.html

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

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

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

6: Тестирование сайта с помощью Siege

Siege можно установить из стандартного репозитория Ubuntu.

sudo apt-get install siege

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

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

Перейдите в домашний каталог и запустите Siege в режиме internet. Чтобы протестировать HTTP-адреса, вместо urls_file укажите urls.txt. Чтобы проверить HTTPS-страницы, укажите файл urls-https.txt.

cd ~
siege --internet --concurrent=5 --time=30S --log="siege-internet.log" --file="urls_file"

  • Флаг —internet переводит Siege в режим internet.
  • —concurrent – это имитируемое количество посетителей. В этом примере Siege будет имитировать 5 одновременных пользователей, что сгенерирует немного трафика без перенагрузки сервера. По мере ознакомления с возможностями сервера вы сможете увеличить это число.
  • —time – продолжительность работы Siege. Значение можно задать с помощью аргументов S (секунды), M (минуты) и H (часы). В данном примере Siege работает 30 секунд. В будущем вы сможете поэкспериментировать с разной продолжительностью тестирования, чтобы увидеть, как сервер реагирует на постоянную нагрузку.
  • —log – это путь к лог-файлу, в котором Siege будет хранить результаты. По умолчанию используется /var/log/siege.log.
  • —file – путь к файлу со списком URL-адресов для анализа.

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

** SIEGE 3.0.8
** Preparing 5 concurrent users for battle.
The server is now under siege...

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

...
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.

Вывод Siege подробно рассматривается в разделе 7.

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

Снова запустите Siege, теперь в режиме —benchmark.

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

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

** 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.

7: Разбор результатов Siege

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

Общий вид вывода Siege таков:

...
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 – процент запросов, на которые ответил веб-сервер, включая коды ошибок HTTP 4xx и 5xx.
  • Elapsed time – продолжительность теста.
  • Data transferred – общая сумма пропускной способности, использованная Siege для тестирования сайта.
  • Response time – это среднее время, которое веб-сервер потратил для ответа на запрос.
  • Transaction rate – это среднее количество транзакций в секунду, которое обслуживал веб-сервер.
  • Throughput – количество данных в секунду, которое обслуживал веб-сервер.
  • Concurrency — среднее количество одновременных подключений.
  • Successful transactions – общее количество транзакций, которые получили код HTTP ниже 400.
  • Failed transactions — общее количество транзакций, которые получили коды HTTP выше 400.
  • Longest transaction – время самой длинной транзакции.
  • Shortest transaction – время самой короткой транзакции.

Transaction rate и Failed transactions – самый быстрый тест общего состояния веб-сервера.

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

Значение Failed transaction относится ответам веб-сервера, содержащим код ошибки (например 503 Service Unavailable). Эти ошибки часто указывают на проблемы БД (например, база данных не может обрабатывать количество входящих запросов) или веб-сервера (ему может не хватать ресурсов). Идеальный результат этого показателя – 0. Если здесь вы видите здесь другое число, просмотрите файлы логов веб-сервера и узнайте, какие именно ошибки произошли на сервере.

Изменяя настройки сервера, чтобы увеличить Transaction rate и снизить Failed transactions, вы можете также консультироваться с логом Siege. Это поможет вам наметить общую стратегию оптимизации.

8: Определение узких мест производительности

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

Скорее всего, это один из них:

  • RAM
  • CPU
  • Диск
  • Пропускная способность сети

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

Вы можете отслеживать первые три ресурса (ОЗУ, ЦП и использование диска) с помощью инструмента top, который обеспечивает динамическое представление системных ресурсов в режиме реального времени.

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

top

Команда вернет вывод, представленный двумя разделами.

top - 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
%Cpu(s):  37.3 us,  7.3 sy,  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

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

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

Читайте также:

Использование CPU определяется строкой «%Cpu(s): 37.3 us, 7.3 sy,» Эти значения говорят, что пользовательские процессы потребляют 37,3% CPU, а системные процессы потребляют 7,3%. Если сложить эти два значения, вы получите общее использование CPU.

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

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

top - 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 :   991.406 total,    223.914 free,    395.621 used,   371.871 buff/cache
MiB Swap:        0.000 total,        0.000 free,        0.000 used.   526.156 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

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

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

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

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

Теперь рассмотрим использование диска:

top - 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,  31.6 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

Использование диска (ожидание I/O) показывает не объем свободного места на диске, а то, насколько доступ к диску замедляет работу сервера. Доступ к диску (особенно если сервер использует вращающиеся жесткие диски) происходит очень медленно, и всякий раз, когда сервер обращается к дискам, CPU должен дождаться получения информации.

Команда top отображает эту информацию как значение wa. Оно указывает процент времени, в течение которого CPU находится в режиме ожидания данных с диска. Это число должно быть как можно ближе к 0.0.

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

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

Нажмите Q, чтобы остановить команду.

Осталось рассмотреть только использование сети. Чтобы отследить эту метрику, можно использовать инструмент Bandwidth Monitor New Generation.

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

sudo apt-get install bwm-ng
bwm-ng

В верхней части вывода отображается номер версии bwm-ng, как часто обновляются данные (по умолчанию каждые 0,5 секунды), источник входного сигнала для определения доступных сетевых интерфейсов (/proc/net/dev по умолчанию в Linux) и отображаемые статистические данные (по умолчанию – скорость использования данных).

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

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

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, чтобы остановить команду.

Tags: , , ,