Для анализа скорости работы сайта, на мой взгляд, лучший сервис - webpagetest.org. И в первую очередь из-за того, что его свободно можно развернуть в любом месте. И это будет полноценная полнофункциональная версия. В этом его главное преимущество. Вы можете локально развернуть его у себя и тестировать локальный же сайт, исключая все возможные помехи.
Одно время я много занимался сайтами, в том числе ускорением их работы. И webpagetest использовал постоянно. У меня была и локальная версия, и публичная, с подключением агентов из разных локаций. Я даже в общий доступ выставлял этот сервис и видел, что люди им пользуются.
Решил на днях посмотреть свежую версию и немного расстроился, не увидев готового образа Docker для быстрой установки сервиса. Установить можно и вручную. Я так делал, но это хлопотное занятие, так как сервис многокомпонентный. Не знаю, почему разработчики перестали сами его собирать.
Хорошая новость в том, что всё для сборки образа есть, но придётся это делать самостоятельно. В репозитории Docker Compose файл и краткая инструкция для сборки. Я стал собирать и столкнулся с множеством проблем. Со всеми в итоге разобрался и запустил у себя локальный сервис webpagetest. Рассказываю, как это сделал.
Для начала клонируем к себе репозиторий (он очень большой, 1 ГБ):
В корне лежит файл
Второй момент - не собирался wptagent. Я его просто отключил, так как сам по себе он с сервером не связан. Его можно собрать и подключить отдельно. Так что закомментировал в композе всё, что связано с агентом:
То есть в исходном
Он соберётся и запустится на 80-м порту сервера. Можно зайти по IP адресу. На странице http://172.26.180.29/install/ можно посмотреть информацию об установке и о подключенных агентах. Скорее всего у вас будет проблема с правами доступа на корневую директорию сервера. Я не стал разбираться, от какого пользователя он стартует и какие конкретно права нужны. Для теста просто дал права 0777 на всю папку www в корне репозитория:
Теперь нам нужно подключить агента. Он может быть запущен как тут же в докере, так и на любом другом сервере. В этом и удобство webpagetest. Вы можете запустить сервер и любое количество агентов в разных местах.
На dockerhub есть собранный агент двухлетней давности. Я не стал его использовать, а собрал свежий из репозитория WebPageTest.agent. По инструкции всё собралось без проблем. После этого запускаем агента, прицепив его к нашему серверу. Перед этим нужно один модуль ядра загрузить:
Параметры в переменных обусловлены настройками Location на сервере в момент сборки, которые живут в
Если вам интересен этот сервис, то полное описание настройки есть у меня на сайте. Ни логика работы, ни формат конфигов не изменились. Разница только в том, что контейнеры нужно собирать самому.
#webpagetest
Одно время я много занимался сайтами, в том числе ускорением их работы. И webpagetest использовал постоянно. У меня была и локальная версия, и публичная, с подключением агентов из разных локаций. Я даже в общий доступ выставлял этот сервис и видел, что люди им пользуются.
Решил на днях посмотреть свежую версию и немного расстроился, не увидев готового образа Docker для быстрой установки сервиса. Установить можно и вручную. Я так делал, но это хлопотное занятие, так как сервис многокомпонентный. Не знаю, почему разработчики перестали сами его собирать.
Хорошая новость в том, что всё для сборки образа есть, но придётся это делать самостоятельно. В репозитории Docker Compose файл и краткая инструкция для сборки. Я стал собирать и столкнулся с множеством проблем. Со всеми в итоге разобрался и запустил у себя локальный сервис webpagetest. Рассказываю, как это сделал.
Для начала клонируем к себе репозиторий (он очень большой, 1 ГБ):
# git clone https://github.com/WPO-Foundation/webpagetest.git
В корне лежит файл
docker-compose.yml
, в котором инструкции для сборки с отсылкой к конфигам в docker/local
. На момент написания заметки в Dockerfile-php
есть проблемы. Я нашёл готовый Pull Request с решением это проблемы с зависимостями. Возможно вскоре он будет принят, но пока рабочий Dockerfile-php можно взять в форке от одного автора. Второй момент - не собирался wptagent. Я его просто отключил, так как сам по себе он с сервером не связан. Его можно собрать и подключить отдельно. Так что закомментировал в композе всё, что связано с агентом:
# agent:
# cap_add: #### Allows traffic shapping
# - NET_ADMIN
# build:
# context: .
# dockerfile: docker/local/Dockerfile-wptagent
# command: python3 wptagent.py -vvvv --xvfb --dockerized --server http://web/work/ --location Test --key 1
То есть в исходном
docker-compose.yml
закомментировал строки с агентом и полностью заменил файл /docker/local/Dockerfile-php
. Далее собрал сервер:# docker-compose up
Он соберётся и запустится на 80-м порту сервера. Можно зайти по IP адресу. На странице http://172.26.180.29/install/ можно посмотреть информацию об установке и о подключенных агентах. Скорее всего у вас будет проблема с правами доступа на корневую директорию сервера. Я не стал разбираться, от какого пользователя он стартует и какие конкретно права нужны. Для теста просто дал права 0777 на всю папку www в корне репозитория:
# chmod -R 0777 www/
Теперь нам нужно подключить агента. Он может быть запущен как тут же в докере, так и на любом другом сервере. В этом и удобство webpagetest. Вы можете запустить сервер и любое количество агентов в разных местах.
На dockerhub есть собранный агент двухлетней давности. Я не стал его использовать, а собрал свежий из репозитория WebPageTest.agent. По инструкции всё собралось без проблем. После этого запускаем агента, прицепив его к нашему серверу. Перед этим нужно один модуль ядра загрузить:
# modprobe ifb numifbs=1
# docker run -d \
-e SERVER_URL="http://172.26.180.29/work/" \
-e LOCATION="Test" \
-e NAME="Test" \
-e KEY="123456789" \
--cap-add=NET_ADMIN \
--init \
wptagent
Параметры в переменных обусловлены настройками Location на сервере в момент сборки, которые живут в
docker/local/wptconfig
. После этого через пару минут на сервере на странице http://172.26.180.29/install/ вы должны увидеть подключенного агента. После этого сервис полностью готов к выполнению тестов. Если вам интересен этот сервис, то полное описание настройки есть у меня на сайте. Ни логика работы, ни формат конфигов не изменились. Разница только в том, что контейнеры нужно собирать самому.
#webpagetest