Încerc să remediez problemele legate de conexiunea foarte lentă a Azure App Services la Azure Database.
După migrarea Wordpress de la găzduire OVH ieftină am observat TTFB extrem de lung: creștere de la 300-400ms la 1500-3000ms.
Am restrâns problema la serviciul aplicației - problemă de conectare la baza de date. Pentru a identifica problema, am creat o instalare curată pentru Wordpress.
Conform P3 - Plugin Performance Profiler, instalarea WP curată creează 38 de interogări la baza de date.
Cu pluginul de statistici de performanță a procesorului PHP/MySQL am rulat MySql Test:
- Azure App Service: 20-50 db interogări / secundă
- Găzduire OVH ieftină: 200+ interogări db/secundă
Cred că problema este destul de evidentă dacă stiva Azure de 200 USD/lună este de aproximativ 20 de ori mai lent decât OVH de 10 USD (cu toate acestea: am aflat că chiar și interogări de ~40 db pe secundă pot duce la TTFB în jur de 300 ms, ceea ce țintesc ).
Pentru a remedia această problemă, am încercat următoarele teste/modificări:
- diferite planuri de servicii pentru aplicații (de la dezvoltare la P2v3)
- diferite servere Azure Database (de la cel mai ieftin la ~300 USD/lună)
- PHP 7.4 și PHP 8.0
- Apache și nginx (vin automat cu modificarea PHP 7/8)
- Servere unice și flexibile Azure Database
- Azure Database pentru MySQL și pentru MariaDB
- serviciu de aplicație la conexiune la baza de date prin IP public și prin integrare vnet
- plasarea bazei de date în exact aceeași zonă de disponibilitate
- conexiuni ssl și non-ssl pentru aplicații/baze de date
- redirecționări baze de date cu mysqlnd_azure
- a încercat persistența conexiunii
- Wordpress în containerul docker App Service
Nici una dintre cele de mai sus a făcut orice modificare semnificativă a performanței.
Singura „remediere” care „funcționează” este activarea memoriei cache. Dacă memoria cache este lovită, TTFB este de aproximativ 100 ms conform așteptărilor.
De asemenea, am evaluat AWS Elastic Beanstalk/RDS și Google App Engine/CloudSQL și funcționează perfect (~250 ms TTFB din cutie). O VM Azure (PHP+ Apache) conectată la aceeași bază de date Azure funcționează bine (<300 ms TTFB).
Am rămas fără idei. Ce îmi lipsește?
Pentru a fi clar: nu încerc să obțin timpi de răspuns cu o singură cifră sau performanță maximă - 300 ms ar fi acceptabile pentru o instalare WP curată.