Tôi đang cố gắng khắc phục sự cố với kết nối Dịch vụ ứng dụng Azure với Cơ sở dữ liệu Azure rất chậm.
Sau khi Wordpress chuyển đổi thành dịch vụ lưu trữ OVH giá rẻ, tôi nhận thấy TTFB cực kỳ dài: tăng từ 300-400 mili giây lên 1500-3000 mili giây.
Tôi đã thu hẹp vấn đề thành dịch vụ ứng dụng - sự cố kết nối cơ sở dữ liệu. Để xác định vấn đề, tôi đã tạo bản cài đặt Wordpress sạch.
Theo P3 - Plugin Performance Profiler, cài đặt WP sạch sẽ tạo ra 38 truy vấn cơ sở dữ liệu.
Với plugin thống kê hiệu suất CPU PHP/MySQL, tôi đã chạy MySql Test:
- Dịch vụ ứng dụng Azure: 20-50 truy vấn db/giây
- Lưu trữ OVH giá rẻ: hơn 200 truy vấn db/giây
Tôi nghĩ rằng vấn đề khá rõ ràng nếu ngăn xếp Azure 200 USD/tháng chậm hơn khoảng 20 lần so với 10 USD OVH (tuy nhiên: tôi đã phát hiện ra rằng thậm chí ~40 truy vấn db mỗi giây có thể dẫn đến TTFB khoảng 300 mili giây, điều mà tôi đang hướng tới ).
Để khắc phục sự cố này, tôi đã thử các kiểm tra/thay đổi sau:
- Các gói dịch vụ ứng dụng khác nhau (từ nhà phát triển đến P2v3)
- các máy chủ Cơ sở dữ liệu Azure khác nhau (từ rẻ nhất đến ~300 usd/tháng)
- PHP 7.4 và PHP 8.0
- Apache và nginx (tự động đi kèm với thay đổi php 7/8)
- Cơ sở dữ liệu Azure Máy chủ đơn và linh hoạt
- Cơ sở dữ liệu Azure cho MySQL và cho MariaDB
- dịch vụ ứng dụng để kết nối cơ sở dữ liệu qua IP công cộng và qua tích hợp vnet
- đặt cơ sở dữ liệu trong cùng một vùng khả dụng
- kết nối ứng dụng/cơ sở dữ liệu ssl và không ssl
- chuyển hướng cơ sở dữ liệu với mysqlnd_azure
- đã thử độ bền kết nối
- Wordpress trong bộ chứa docker Dịch vụ ứng dụng
Không có điều nào ở trên thực hiện bất kỳ thay đổi đáng kể trong hiệu suất.
"Cách khắc phục" duy nhất "hoạt động" là bật bộ đệm. Nếu bộ đệm bị tấn công, TTFB là khoảng 100 ms như mong đợi.
Tôi cũng đã đo điểm chuẩn AWS Elastic Beanstalk/RDS và Google App Engine/CloudSQL và chúng hoạt động hoàn hảo (~250 ms TTFB ngay khi mở hộp). Máy ảo Azure (PHP + Apache) được kết nối với cùng một Cơ sở dữ liệu Azure hoạt động tốt (<300ms TTFB).
Tôi không có ý kiến. Tôi đang thiếu gì?
Nói rõ hơn: Tôi không cố gắng đạt được thời gian phản hồi một chữ số hoặc hiệu suất cuối cùng - 300 mili giây có thể chấp nhận được đối với cài đặt WP sạch.