Наиболее продвинутые компании на высококонкуретном рынке B2C понимают, что высокая скорость загрузки сайта положительно сказывается не только на имидже, но и на показателях конверсии.
Для того, чтобы что-то оптимизировать, нужно это замерить. В измерениях нам поможет инструмент под названием sitespeed.io.
В упрощённом варианте можно использовать всего 2 машины - 1 сервер и 1 клиент. Машины нужны изолированные, так как на измерения клиента не должны влиять операции на сервере.
Если потребуется, можно нарастить количество клиентов.
Серверная сторона
Требования
- docker
- docker-compose
- возможность откытия дополнительных портов.
Сервер состоит из СУБД graphite
для хранения измерений и интерфейса grafana
для их отображения.
Содержимое файла docker-compose.tmpl
version: '2'
services:
graphite:
image: sitespeedio/graphite
container_name: sitespeed-graphite
network_mode: "bridge"
restart: always
ports:
- 2003:2003
grafana-bootstrap:
image: sitespeedio/grafana-bootstrap
container_name: sitespeed-grafana-bootstrap
network_mode: "bridge"
depends_on:
- grafana
links:
- grafana
environment:
- GF_PASSWORD=** # заменить на пароль
- GF_USER=* # заменить на имя пользователя
grafana:
image: grafana/grafana
container_name: sitespeed-grafana
network_mode: "bridge"
depends_on:
- graphite
links:
- graphite
environment:
- GF_SECURITY_ADMIN_PASSWORD=** # заменить на пароль
- GF_SECURITY_ADMIN_USER=* # заменить на имя пользователя
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_USERS_ALLOW_SIGN_UP=false
- GF_USERS_ALLOW_ORG_CREATE=false
ports:
- 80:3000
Входящие соединения с клиентов на порт 2003
прокидываются в контейнер с graphite
.
Первичный запуск с инициализацией стандартных панелей sitespeed в grafana:
- docker-compose up -d
- docker-compose run --rm grafana-bootstrap
Клиент
Требования
- docker
Пример запуска сбора данных в crontab раз в 10 минут
*/10 * * * * docker run -v /etc/sitespeed.io/urls.txt:/sitespeed.io/urls.txt sitespeedio/sitespeed.io urls.txt --graphite.host=[хост с сервером] -n 1 --speedIndex false --video false -c 3g >> /tmp/sitespeed.log
Файл urls.txt
содержит список страниц, которые нужно проверить:
https://yandex.ru
https://мой-быстрый-сайт.рф
Соединение должно быть фиксированным (-c 3g
означает иммитацию 3G),
чтобы снизить зависимость измерений от сетевых проблем.
Несколько клиентов
Если проект развивается и появилась возможность мониторить время загрузки страниц с разных провайдеров, сетей, географических зон, добавьте в crontab клиента
--graphite.namespace sitespeed_io.perm
В этом примере perm
означает, что замеры производятся в городе Пермь.