.png)
Я пытаюсь исправить проблемы с очень медленным подключением служб приложений Azure к базе данных Azure.
После миграции Wordpress с дешевого хостинга OVH я заметил чрезвычайно большое время отклика: оно увеличилось с 300-400 мс до 1500-3000 мс.
Я сузил проблему до службы приложений - проблемы с подключением к базе данных. Чтобы определить проблему, я создал чистую установку Wordpress. Согласно P3 - Plugin Performance Profiler, чистая установка WP создает 38 запросов к базе данных.
С помощью плагина статистики производительности процессора PHP/MySQL я запустил MySql Test:
- Служба приложений Azure: 20–50 запросов к БД в секунду
- Дешевый хостинг OVH: 200+ запросов к БД в секунду
Я думаю, проблема довольно очевидна, если стек Azure стоимостью 200 долларов США в месяц примерно в 20 раз медленнее, чем OVH стоимостью 10 долларов США (однако: я обнаружил, что даже ~40 запросов к базе данных в секунду могут привести к TTFB около 300 мс, к чему я и стремлюсь).
Чтобы исправить эту проблему, я попробовал следующие тесты/изменения:
- различные планы обслуживания приложений (от dev до P2v3)
- различные серверы баз данных Azure (от самых дешевых до ~300 долл. США/мес.)
- PHP 7.4 и PHP 8.0
- Apache и nginx (автоматически входят в комплект поставки PHP 7/8)
- База данных Azure Отдельные и гибкие серверы
- База данных Azure для MySQL и MariaDB
- подключение службы приложений к базе данных через публичный IP и через интеграцию vnet
- размещение базы данных в точно такой же зоне доступности
- Подключения к приложениям/базам данных с использованием SSL и без него
- перенаправления базы данных сmysqlnd_azure
- проверенное соединение сохраняемость
- Wordpress в контейнере Docker App Service
Ни один из вышеперечисленныхвнес существенные изменения в производительность. Единственное "исправление", которое "работает", - включить кэш. Если кэш попадает, TTFB составляет около 100 мс, как и ожидалось.
Я также протестировал AWS Elastic Beanstalk/RDS и Google App Engine/CloudSQL, и они работают отлично (~250 мс TTFB из коробки). Azure VM (PHP+ Apache), подключенная к той же базе данных Azure, работает отлично (<300 мс TTFB).
У меня нет идей. Что я упускаю? Для ясности: я не пытаюсь достичь однозначного времени отклика или максимальной производительности — 300 мс было бы приемлемо для чистой установки WP.
решение1
Вот несколько вещей, на которые следует обратить внимание, поскольку они не были упомянуты в вопросе.
- Убедитесь, что веб-приложение и база данных находятся в одном регионе. Это может показаться элементарным, но я уже видел это раньше.
- Давать возможностьВсегда включенв настройках службы приложений Azure. Всегда включен: Сохраняет приложение загруженным даже при отсутствии трафика. Если Always On не включен (по умолчанию), приложение выгружается через 20 минут без входящих запросов. Выгруженное приложение может вызвать большую задержку для новых запросов из-за времени прогрева. КогдаВсегда включенвключен, балансировщик нагрузки front-end отправляет запрос GET в корень приложения каждые пять минут. Постоянный пинг предотвращает выгрузку приложения.
- ОбзорЛучшие практики сервиса приложений.
решение2
У меня тоже такая же проблема. Azure очень-очень медленный и ничего не работает?
PP_1, Что вы подразумеваете под включением кэша? Вы имеете в виду плагины типа WP Rocket?
решение3
У меня та же проблема. Я провел несколько тестовых подключений к контейнеру через веб-ssh и обнаружил, что для этого требуется php200-300 мс только на загрузку плагинов. h поэтому мой окончательный вывод таков, что у Azure проблема с php.
Мне было бы очень любопытно узнать, удалось ли кому-нибудь достичь приличной производительности на Azure без кэширования (с PHP на Linux).
В итоге мы настроили приложение с помощью скрипта запуска, который перенастраивает NGIX на агрессивное кэширование страниц, что хорошо работает для некоторых наших сайтов, но далеко не идеально. Теперь у нас TTFB 50 мс для кэшированных страниц.
решение4
Проблема в том, как службы приложений Azure используют хранилище. Вот почему плагины так долго загружаются.
Короче говоря, App Services не подходят для хостинга Wordpress!