По существу и в цифрах показываем, как работает CDN на реальном примере. Мы создали экспериментальный блог — katexp.xyz, замерили показатели сервера в htop и Grafana под нагрузкой и без неё, замерили доступность сайта из различных точек мира через онлайн-сервис ping-admin.com и провели нагрузочное тестирование с помощью Jmeter.
В итоге получили наглядную аналитику, из которой видно — насколько CDN ускоряет работу сайта, находящегося под нагрузкой и дает потенциал к его развитию в будущем. Если вам интересно узнать об общих принципах работы CDN — ознакомьтесь со статьёй из нашего блога: «Что такое CDN простыми словами».
Вводные и матчасть
У нас есть блог, собранный на связке Nginx + WordPress + MariaDB, размещенный на виртуальном сервере с 4 ядерным Intel Xeon Gold 3GHz, 4Gb RAM и 40 GB SSD в ЦОде Xelent. Обратите внимание, CMS написанные на PHP (WordPress, Joomla, Drupal) под нагрузкой становятся требовательны к производительности процессора. Поэтому важно, чтобы была возможность расширить ресурсы виртуального сервера в будущем.
Виртуальные серверы от 1cloud построены на Enterprise-виртуализации, что дает возможность гибкого управления ресурсами, безопасностью, сетями. Также есть возможность управлять инфраструктурой по API и создавать свои сценарии автоматизации.
Симулируем с помощью Jmeter ситуацию, при которой количество посетителей блога увеличилось с 1-5 до 30+ в 1с. При таких нагрузках наш сервер начал захлебываться: время загрузки сайта увеличилось с 0,93 c. до 8+ с., количество сброшенных сетевых соединений поднялось с 0% до 35-40%, а нагрузка на процессор превысила 75%.
Мы предполагаем, что в будущем ситуация только ухудшится, ведь количество посетителей будет только расти, дополнительные ресурсы мы приобретать не хотим, специалистов, умеющих оптимизировать PHP-FPM и NGINX у нас нет, а проблему нужно решать сейчас.
Выход: подключить CDN и решить проблему пиковых нагрузок, увеличится запас по производительности в будущем и восстановится доступность сайта из разных точек мира.
Начнем с показателей работы и доступности сайта без нагрузки и без CDN.
Показатели сервера без нагрузки и без CDN
В состоянии покоя сервер использует лишь малую часть своих ресурсов: CPU — 0,3%; RAM — 26%; NET — 0,05%; Disk I/O — 0,3%. Как видно ресурсов хватает с запасом.
Проверка доступности сайта из различных точек мира также показывает хорошие результаты:
Точка мониторинга | Общее время, сек. | DNS, сек. | Соединение, сек. | Ожидание ответа, сек. | Скорость загрузки, МБ/с |
---|---|---|---|---|---|
Россия, Москва, восток 1 | 1,59 | 1,51 | 0,01 | 0,07 | 18,66 |
Россия, Владивосток | 2,17 | 1,87 | 0,12 | 0,18 | 9,38 |
Россия, Казань | 0,37 | 0,25 | 0,02 | 0,09 | 34,94 |
Россия, Санкт-Петербург, восток | 0,37 | 0,25 | 0,02 | 0,09 | 22,62 |
Белоруссия, Минск | 3,63 | 3,51 | 0,02 | 0,09 | 1,53 |
Германия, Мюнхен | 0,21 | 0,06 | 0,05 | 0,10 | 9 |
Грузия, Тбилиси | 0,53 | 0,25 | 0,11 | 0,17 | 6,33 |
Казахстан, Алатау | 0,71 | 0,51 | 0,07 | 0,13 | 10 |
Латвия, Рига | 0,26 | 0,12 | 0,02 | 0,11 | 15,84 |
Литва, Вильнюс | 0,35 | 0,25 | 0,02 | 0,08 | 20,93 |
Молдавия, Кишинёв | 0,44 | 0,26 | 0,06 | 0,12 | 18,28 |
США, Аризона, Феникс | 0,45 | 0,06 | 0,17 | 0,23 | 17,99 |
Турция, Измир | 1,75 | 1,51 | 0,08 | 0,16 | 21,65 |
Франция, Рубе | 0,20 | 0,06 | 0,04 | 0,10 | 42,93 |
Средний показатель | 0,93 | 0,74 | 0,05 | 0,12 | 17,86 |
Среднее время загрузки сайта: 0,93 с., а скорость загрузки: почти 18 Mb/s. Всё работает отлично даже без оптимизации NGINX, WordPress и PHP. Однако картина сильно меняется, когда на сайт приходит большое количество пользователей одновременно.
Показатели сервера без CDN и под нагрузкой
Создаём тестовую нагрузку на сайт с помощью Jmeter — 30 посетителей в 1 с. При такой нагрузке наш сервер чувствует себя уже очень некомфортно: CPU — 75%; RAM — 26%; NET — 5%; Disk I/O — 10%.
Сайт стал почти недоступен из любой точки мира:
Точка мониторинга | Общее время, сек. | DNS, сек. | Соединение, сек. | Ожидание ответа, сек. | Скорость загрузки, МБ/с |
---|---|---|---|---|---|
Россия, Москва, восток 1 | 8,38 | 0,14 | 0,10 | 8,14 | 18,66 |
Россия, Владивосток | 8,34 | 0,26 | 0,04 | 8,04 | 8,38 |
Россия, Казань | 7,92 | 0,25 | 0,02 | 7,64 | 34,94 |
Россия, Санкт-Петербург, восток | 8,89 | 0,40 | 0,04 | 8,45 | 20,62 |
Белоруссия, Минск | 8,58 | 0,04 | 0,09 | 8,45 | 1,53 |
Германия, Мюнхен | 8,62 | 0,20 | 0,04 | 8,38 | 7,00 |
Грузия, Тбилиси | 9,12 | 0,07 | 0,10 | 8,95 | 4,33 |
Казахстан, Алатау | 8,77 | 0,20 | 0,12 | 8,45 | 8,00 |
Латвия, Рига | 7,91 | 0,25 | 0,02 | 7,63 | 15,84 |
Литва, Вильнюс | 7,94 | 0,25 | 0,02 | 7,67 | 20,93 |
Молдавия, Кишинёв | 8,55 | 0,15 | 0,02 | 8,38 | 18,28 |
США, Аризона, Феникс | 7,75 | 0,06 | 0,05 | 7,65 | 15,99 |
Турция, Измир | 7,95 | 0,25 | 0,07 | 7,63 | 20,65 |
Франция, Рубе | 9,31 | 0,30 | 0,04 | 8,97 | 41,93 |
Средний показатель | 8,43 | 0,20 | 0,06 | 8,17 | 16,93 |
Среднее время загрузки сайта: 8+ с., скорость загрузки: 16 Mb/s. К тому же появились сбросы сетевых соединений из-за медленных php-скриптов. Потолок производительности нашего блога — 25-30 пос./1c. Дальше работать с сайтом просто не возможно.
Давайте подключим CDN и посмотрим, что изменилось?
Показатели сервера под нагрузкой и c CDN
После подключения CDN, которое заняло буквально пару часов с учётом обновления DNS-записей и прогрева сети, показатели сервера вернулись в норму: CPU — 0,5%, RAM — 26%; NET — 4%; Disk I/O — 9%.
Интересно, что показатели доступности сайта под нагрузкой с подключенным CDN стали лучше, чем были, когда сайт находился в состоянии покоя:
Точка мониторинга | Общее время, сек. | DNS, сек. | Соединение, сек. | Ожидание ответа, сек. | Скорость загрузки, МБ/с |
---|---|---|---|---|---|
Россия, Москва, восток 1 | 0,24 | 0,14 | 0,10 | 0,00 | 20,66 |
Россия, Владивосток | 0,32 | 0,26 | 0,04 | 0,02 | 9,38 |
Россия, Казань | 0,28 | 0,25 | 0,02 | 0,01 | 32,94 |
Россия, Санкт-Петербург, восток | 0,45 | 0,40 | 0,04 | 0,01 | 22,62 |
Белоруссия, Минск | 0,16 | 0,04 | 0,09 | 0,03 | 1,53 |
Германия, Мюнхен | 0,25 | 0,20 | 0,04 | 0,01 | 8,00 |
Грузия, Тбилиси | 0,19 | 0,07 | 0,10 | 0,02 | 4,33 |
Казахстан, Алатау | 0,19 | 0,03 | 0,12 | 0,04 | 10,00 |
Латвия, Рига | 0,27 | 0,25 | 0,02 | 0,00 | 14,84 |
Литва, Вильнюс | 0,28 | 0,25 | 0,02 | 0,01 | 19,93 |
Молдавия, Кишинёв | 0,19 | 0,15 | 0,02 | 0,02 | 18,28 |
США, Аризона, Феникс | 0,14 | 0,06 | 0,05 | 0,03 | 15,99 |
Турция, Измир | 0,33 | 0,25 | 0,07 | 0,01 | 21,65 |
Франция, Рубе | 0,13 | 0,02 | 0,09 | 0,02 | 42,93 |
Средний показатель | 0,24 | 0,17 | 0,06 | 0,02 | 17,86 |
Cкорости ответа DNS-серверов стала значительно ниже — 0,17 c. против 0,75 с., среднее время загрузки сайта сократилось с 0,93 до 0,24 с., скорость загрузки вернулась в норму — 17 Mb/s. Сбросы соединений также пропали. Всю нагрузку на себя забрал CDN.
Нагрузка теперь приходит не на наш виртуальный сервер в Xelent — 185.158.153.25, а на CDN-сервер сети G-core — 92.223.99.99. Конечно, нам стало интересно, а насколько его хватит? Без лишнего фанатизма мы довели уровень запросов до 100 п./1с. — CDN-сервер переварил такую нагрузку без проблем.
Что в итоге?
CDN полностью разгрузил сервер от текущей пиковой нагрузки в 30 пос./1с., на 30% ускорил загрузку сайта из многих точек мира, ускорил ответ DNS-серверов на 75% и дал запас по мощности в будущем. Также CDN помог нам не тратить время и ресурсы на оптимизацию ПО.
CDN мы подключили за 1 день. После подключения ушла пара часов на ожидание обновления DNS-серверов Namecheap. Еще 30 минут мы потратили на прогрев сети с помощью ping-admin.com. В итоге мы быстро решили проблему пиковой нагрузки, получили хороший запас мощности на будущие и всё это без каких-либо серьезных вложений.
Обратите внимание, оперативно услугу CDN можно подключить только в будние дни. Также стоит помнить, что на обновление публичных DNS-серверов может уйти до 24 ч.
Подключается CDN от 1cloud очень легко. Достаточно оставить заявку на подключение через Панель. Услуга подключается в 5 простых шагов:
- Выбрать уровень защиты и ускорения работы сайта с помощью сервисов CDN и DNS;
- Ввести сайт, который вы хотите ускорить и защитить;
- Добавьте нужные DNS записи к своему домену;
- Заменить NS-записи вашего регистратора на G-core;
- Настройте опции CDN-ресурса, чтобы повысить безопасность, ускорить работу и максимально эффективно использовать свой сайт.
При настройке CDN можно установить сжатие gzip, разрешать WebSocket-соединения с источником, настроить редиректы с HTTP на HTTPS, подключить SSL, настроить WAF и опции защиты от DDoS. Если у вас остались вопросы — вы можете задать их нашим специалистам через форму обращения на сайте. Подключить услугу можно по кнопке ниже.