Truy cập nhanh
- Tìm một người bạn đồng hành
- Đăng ký Chương trình Đối tác OVHcloud
- Đăng ký Chương trình Khởi động OVHcloud
- So sánh giá
- Cổng đối tác
- Câu hỏi thường gặp về chương trình đối tác
- Quay lại trình đơn
Về
Về- Chúng ta là ai
- Tin tức
- trung tâm dữ liệu của chúng tôi
- Tham gia cuộc phiêu lưu OVHcloud
- Cam kết bằng sáng chế
- Hợp pháp
- GDPR - Bảo vệ dữ liệu cá nhân
Truy cập nhanh
- Thông tin thêm về OVHcloud
- Quan hệ đầu tư
- Tài liệu và Hướng dẫn
- webđám mây
- OVHcloud Web PaaS được cung cấp bởi Nền tảng. sh
- PHP
- Điều chỉnh hiệu suất
Điều chỉnh hiệu suất
Đóng góp
Chia sẻ
Twitter Facebook LinkedIn
In
PHP
- Kho lưu trữ Trình soạn thảo được xác thực
- Tiện ích mở rộng
- Định cỡ PHP-FPM
- khung
- PHP. đây là cài đặt
- Phiên bản Redis tùy chỉnh
- len
- Khắc phục sự cố PHP
- Điều chỉnh hiệu suất
- Sử dụng Xdebug
Cập nhật lần cuối ngày 2 tháng 6 năm 2022
khách quan
Sau khi ứng dụng của bạn được thiết lập và chạy, nó vẫn cần được duy trì tốc độ nhanh. Web PaaS cung cấp mức độ linh hoạt cao trong cách PHP hoạt động, nhưng điều đó không có nghĩa là bạn có thể cần thực hiện một số bước để đảm bảo trang web của mình đang chạy tối ưu
Các khuyến nghị sau đây chỉ là hướng dẫn. Chúng cũng được liệt kê theo thứ tự mà chúng tôi khuyên bạn nên điều tra chúng, mặc dù số dặm của bạn có thể thay đổi
Nâng cấp lên PHP 7. 3+
Có rất ít mục đích để cố gắng tối ưu hóa ứng dụng PHP trên PHP 5. PHP 7 thường nhanh gấp đôi và sử dụng một nửa bộ nhớ so với PHP 5, chắc chắn đây là bước đầu tiên cần thực hiện khi cố gắng làm cho một trang web dựa trên PHP chạy nhanh hơn
Để thay đổi phiên bản PHP của bạn, hãy thay đổi khóa type
trong .platform.app.yaml
của bạn thành phiên bản PHP mong muốn. Như mọi khi, hãy kiểm tra nó trên nhánh trước khi hợp nhất vào sản xuất
Đảm bảo rằng bộ đệm của bộ định tuyến được cấu hình đúng cách
Mặc dù không dành riêng cho PHP, một nguồn phổ biến của các vấn đề về hiệu suất là bộ đệm được định cấu hình sai. Vấn đề phổ biến nhất là không cho phép đúng cookie như một phần của bộ đệm của bộ định tuyến. Một số cookie, chẳng hạn như cookie phiên, cần phải được cho phép, trong khi những cookie khác, chẳng hạn như cookie tiếp thị và phân tích, thường không được phép trở thành một phần của khóa bộ đệm. Xem thêm về bộ đệm của bộ định tuyến và mục nhập cookie
Bạn cũng cần đảm bảo rằng ứng dụng của bạn đang gửi đúng tiêu đề cache-control
. Bộ đệm của bộ định tuyến tuân theo bất kỳ tiêu đề bộ đệm nào mà ứng dụng của bạn gửi, vì vậy hãy gửi những tiêu đề tốt
Tiêu đề bộ đệm nội dung tĩnh được đặt bằng cách sử dụng khóa expires
trong .platform.app.yaml
. Xem tài liệu
cd /tmp curl -sLO //github.com/gordalina/cachetool/releases/latest/download/cachetool.phar chmod +x cachetool.phar php cachetool.phar opcache:status --fcgi=$SOCKET0 để biết thêm chi tiết
Tối ưu hóa số lượng nhân viên FPM
PHP-FPM dự trữ một số quy trình worker đồng thời cố định để xử lý các yêu cầu đến. Nếu nhận được nhiều yêu cầu đồng thời hơn số lượng công nhân, thì một số yêu cầu sẽ chờ. Số lượng công nhân mặc định được cố ý đặt khá thận trọng nhưng có thể được cải thiện trong nhiều trường hợp. Xem trang định cỡ PHP-FPM để biết cách xác định và đặt giá trị tối ưu hơn
Bật tải trước
PHP7. 4 trở lên hỗ trợ tải trước các tệp mã vào bộ nhớ dùng chung một lần khi khởi động máy chủ, bỏ qua nhu cầu đưa vào hoặc tự động tải chúng sau này. Tùy thuộc vào ứng dụng của bạn đang làm gì, nó có thể dẫn đến những cải tiến đáng kể cho cả việc sử dụng CPU và bộ nhớ. Nếu sử dụng PHP 7. 4 trở lên, hãy xem hướng dẫn Tải trước PHP để biết cách định cấu hình nó trên Web PaaS. Tham khảo tài liệu về ứng dụng của bạn để xem họ có bất kỳ đề xuất nào cho cấu hình tải trước tối ưu không
Nếu bạn không sử dụng PHP 7. 4, đây là một lý do tốt để nâng cấp
Lưu ý rằng cách duy nhất để xóa bộ đệm tải trước là khởi động lại PHP-FPM. PHP-FPM không tự động khởi động lại sau mỗi lần triển khai, vì vậy bạn có thể muốn thêm nó vào móc nối
cd /tmp curl -sLO //github.com/gordalina/cachetool/releases/latest/download/cachetool.phar chmod +x cachetool.phar php cachetool.phar opcache:status --fcgi=$SOCKET1, chẳng hạn như bằng cách bao gồm
cd /tmp curl -sLO //github.com/gordalina/cachetool/releases/latest/download/cachetool.phar chmod +x cachetool.phar php cachetool.phar opcache:status --fcgi=$SOCKET2 hoặc
cd /tmp curl -sLO //github.com/gordalina/cachetool/releases/latest/download/cachetool.phar chmod +x cachetool.phar php cachetool.phar opcache:status --fcgi=$SOCKET3
Nếu có, bạn cần xóa OPcache Rõ ràng khi triển khai [có thể thực hiện việc này bằng cách khởi động lại PHP-FPM]
Định cấu hình OPcache
PHP5. 5 trở lên bao gồm OPcache luôn được bật, vì nó phải như vậy. Nó vẫn có thể cần phải được điều chỉnh, tuy nhiên. OPcache có thể được cấu hình bằng cách sử dụng các giá trị
cd /tmp curl -sLO //github.com/gordalina/cachetool/releases/latest/download/cachetool.phar chmod +x cachetool.phar php cachetool.phar opcache:status --fcgi=$SOCKET4, trong trường hợp này được thiết lập tốt nhất bằng cách sử dụng khối
cd /tmp curl -sLO //github.com/gordalina/cachetool/releases/latest/download/cachetool.phar chmod +x cachetool.phar php cachetool.phar opcache:status --fcgi=$SOCKET5 trong
.platform.app.yaml
Nếu sử dụng tải trước OPcache trên PHP 7. 4 trở lên, trước tiên hãy định cấu hình ứng dụng đó và để ứng dụng chạy một lúc trước khi tự điều chỉnh OPcache vì tập lệnh tải trước có thể thay đổi cấu hình cần thiết tại đây
Các giá trị quan trọng nhất cần đặt là
cd /tmp curl -sLO //github.com/gordalina/cachetool/releases/latest/download/cachetool.phar chmod +x cachetool.phar php cachetool.phar opcache:status --fcgi=$SOCKET
7. Số lượng tệp tối đa mà OPcache có thể lưu trữ cùng một lúc. Nếu con số này thấp hơn số lượng tệp trong ứng dụng, nó sẽ bắt đầu hoạt động và trở nên kém hiệu quả hơncd /tmp curl -sLO //github.com/gordalina/cachetool/releases/latest/download/cachetool.phar chmod +x cachetool.phar php cachetool.phar opcache:status --fcgi=$SOCKET
8. Tổng bộ nhớ mà OPcache có thể sử dụng. Nếu ứng dụng lớn hơn mức này, bộ đệm sẽ bắt đầu hoạt động và trở nên kém hiệu quả hơn
Để xác định bạn có bao nhiêu tệp, hãy chạy lệnh này từ gốc ứng dụng của bạn
________số 8_______
Điều đó báo cáo số lượng tệp trong cây tệp của bạn kết thúc bằng
cd /tmp curl -sLO //github.com/gordalina/cachetool/releases/latest/download/cachetool.phar chmod +x cachetool.phar php cachetool.phar opcache:status --fcgi=$SOCKET9. Điều đó có thể không hoàn toàn chính xác [một số ứng dụng có mã PHP trong các tệp không kết thúc bằng ____0_______9, nó có thể không bắt được các tệp được tạo chưa được tạo, v.v.], nhưng đó là một phép tính gần đúng hợp lý. Đặt tùy chọn
cd /tmp curl -sLO //github.com/gordalina/cachetool/releases/latest/download/cachetool.phar chmod +x cachetool.phar php cachetool.phar opcache:status --fcgi=$SOCKET7 thành giá trị cao hơn giá trị này một chút. Lưu ý rằng PHP tự động làm tròn giá trị bạn chỉ định cho đến số nguyên tố cao nhất tiếp theo
Thật không may, việc xác định một
cd /tmp curl -sLO //github.com/gordalina/cachetool/releases/latest/download/cachetool.phar chmod +x cachetool.phar php cachetool.phar opcache:status --fcgi=$SOCKET8 tối ưu khó hơn một chút vì nó yêu cầu thực thi mã thông qua một yêu cầu web để có được số liệu thống kê đầy đủ. May mắn thay, có một công cụ dòng lệnh xử lý hầu hết điều đó
Thay đổi thư mục
+----------------------+---------------------------------+ | Name | Value | +----------------------+---------------------------------+ | Enabled | Yes | | Cache full | No | | Restart pending | No | | Restart in progress | No | | Memory used | 29.65 MiB | | Memory free | 34.35 MiB | | Memory wasted [%] | 0 b [0%] | +----------------------+---------------------------------+ | Cached scripts | 1528 | | Cached keys | 2609 | | Max cached keys | 32531 | | Start time | Mon, 18 Jun 2018 18:19:32 +0000 | | Last restart time | Never | | Oom restarts | 0 | | Hash restarts | 0 | | Manual restarts | 0 | | Hits | 8554 | | Misses | 1594 | | Blacklist misses [%] | 0 [0%] | | Opcache hit rate | 84.29247142294 | +----------------------+---------------------------------+3 [hoặc bất kỳ thư mục ghi nào không thể truy cập web] và cài đặt
+----------------------+---------------------------------+ | Name | Value | +----------------------+---------------------------------+ | Enabled | Yes | | Cache full | No | | Restart pending | No | | Restart in progress | No | | Memory used | 29.65 MiB | | Memory free | 34.35 MiB | | Memory wasted [%] | 0 b [0%] | +----------------------+---------------------------------+ | Cached scripts | 1528 | | Cached keys | 2609 | | Max cached keys | 32531 | | Start time | Mon, 18 Jun 2018 18:19:32 +0000 | | Last restart time | Never | | Oom restarts | 0 | | Hash restarts | 0 | | Manual restarts | 0 | | Hits | 8554 | | Misses | 1594 | | Blacklist misses [%] | 0 [0%] | | Opcache hit rate | 84.29247142294 | +----------------------+---------------------------------+4. Nó có nhiều lệnh và tùy chọn, nhưng bạn chỉ cần trạng thái OPcache cho lệnh FastCGI. Phiên bản tải xuống và sử dụng thực sự ngắn sẽ là
cd /tmp curl -sLO //github.com/gordalina/cachetool/releases/latest/download/cachetool.phar chmod +x cachetool.phar php cachetool.phar opcache:status --fcgi=$SOCKET
Tùy chọn
+----------------------+---------------------------------+ | Name | Value | +----------------------+---------------------------------+ | Enabled | Yes | | Cache full | No | | Restart pending | No | | Restart in progress | No | | Memory used | 29.65 MiB | | Memory free | 34.35 MiB | | Memory wasted [%] | 0 b [0%] | +----------------------+---------------------------------+ | Cached scripts | 1528 | | Cached keys | 2609 | | Max cached keys | 32531 | | Start time | Mon, 18 Jun 2018 18:19:32 +0000 | | Last restart time | Never | | Oom restarts | 0 | | Hash restarts | 0 | | Manual restarts | 0 | | Hits | 8554 | | Misses | 1594 | | Blacklist misses [%] | 0 [0%] | | Opcache hit rate | 84.29247142294 | +----------------------+---------------------------------+5 cho lệnh biết cách kết nối với quy trình PHP-FPM trên máy chủ thông qua ổ cắm do Web PaaS xác định. Lệnh đó xuất ra một cái gì đó tương tự như sau
+----------------------+---------------------------------+ | Name | Value | +----------------------+---------------------------------+ | Enabled | Yes | | Cache full | No | | Restart pending | No | | Restart in progress | No | | Memory used | 29.65 MiB | | Memory free | 34.35 MiB | | Memory wasted [%] | 0 b [0%] | +----------------------+---------------------------------+ | Cached scripts | 1528 | | Cached keys | 2609 | | Max cached keys | 32531 | | Start time | Mon, 18 Jun 2018 18:19:32 +0000 | | Last restart time | Never | | Oom restarts | 0 | | Hash restarts | 0 | | Manual restarts | 0 | | Hits | 8554 | | Misses | 1594 | | Blacklist misses [%] | 0 [0%] | | Opcache hit rate | 84.29247142294 | +----------------------+---------------------------------+
Các giá trị quan trọng nhất lúc này là
+----------------------+---------------------------------+ | Name | Value | +----------------------+---------------------------------+ | Enabled | Yes | | Cache full | No | | Restart pending | No | | Restart in progress | No | | Memory used | 29.65 MiB | | Memory free | 34.35 MiB | | Memory wasted [%] | 0 b [0%] | +----------------------+---------------------------------+ | Cached scripts | 1528 | | Cached keys | 2609 | | Max cached keys | 32531 | | Start time | Mon, 18 Jun 2018 18:19:32 +0000 | | Last restart time | Never | | Oom restarts | 0 | | Hash restarts | 0 | | Manual restarts | 0 | | Hits | 8554 | | Misses | 1594 | | Blacklist misses [%] | 0 [0%] | | Opcache hit rate | 84.29247142294 | +----------------------+---------------------------------+6,
+----------------------+---------------------------------+ | Name | Value | +----------------------+---------------------------------+ | Enabled | Yes | | Cache full | No | | Restart pending | No | | Restart in progress | No | | Memory used | 29.65 MiB | | Memory free | 34.35 MiB | | Memory wasted [%] | 0 b [0%] | +----------------------+---------------------------------+ | Cached scripts | 1528 | | Cached keys | 2609 | | Max cached keys | 32531 | | Start time | Mon, 18 Jun 2018 18:19:32 +0000 | | Last restart time | Never | | Oom restarts | 0 | | Hash restarts | 0 | | Manual restarts | 0 | | Hits | 8554 | | Misses | 1594 | | Blacklist misses [%] | 0 [0%] | | Opcache hit rate | 84.29247142294 | +----------------------+---------------------------------+7 và
+----------------------+---------------------------------+ | Name | Value | +----------------------+---------------------------------+ | Enabled | Yes | | Cache full | No | | Restart pending | No | | Restart in progress | No | | Memory used | 29.65 MiB | | Memory free | 34.35 MiB | | Memory wasted [%] | 0 b [0%] | +----------------------+---------------------------------+ | Cached scripts | 1528 | | Cached keys | 2609 | | Max cached keys | 32531 | | Start time | Mon, 18 Jun 2018 18:19:32 +0000 | | Last restart time | Never | | Oom restarts | 0 | | Hash restarts | 0 | | Manual restarts | 0 | | Hits | 8554 | | Misses | 1594 | | Blacklist misses [%] | 0 [0%] | | Opcache hit rate | 84.29247142294 | +----------------------+---------------------------------+8 [Khởi động lại hết bộ nhớ]. Nếu số
+----------------------+---------------------------------+ | Name | Value | +----------------------+---------------------------------+ | Enabled | Yes | | Cache full | No | | Restart pending | No | | Restart in progress | No | | Memory used | 29.65 MiB | | Memory free | 34.35 MiB | | Memory wasted [%] | 0 b [0%] | +----------------------+---------------------------------+ | Cached scripts | 1528 | | Cached keys | 2609 | | Max cached keys | 32531 | | Start time | Mon, 18 Jun 2018 18:19:32 +0000 | | Last restart time | Never | | Oom restarts | 0 | | Hash restarts | 0 | | Manual restarts | 0 | | Hits | 8554 | | Misses | 1594 | | Blacklist misses [%] | 0 [0%] | | Opcache hit rate | 84.29247142294 | +----------------------+---------------------------------+8 cao [có nghĩa là nhiều hơn một số ít], điều đó có nghĩa là bạn không có đủ bộ nhớ được phân bổ cho OPcache. Trong ví dụ này, OPcache đang sử dụng khoảng một nửa trong số 64 MB được cung cấp cho nó theo mặc định, điều này không sao cả. Nếu
+----------------------+---------------------------------+ | Name | Value | +----------------------+---------------------------------+ | Enabled | Yes | | Cache full | No | | Restart pending | No | | Restart in progress | No | | Memory used | 29.65 MiB | | Memory free | 34.35 MiB | | Memory wasted [%] | 0 b [0%] | +----------------------+---------------------------------+ | Cached scripts | 1528 | | Cached keys | 2609 | | Max cached keys | 32531 | | Start time | Mon, 18 Jun 2018 18:19:32 +0000 | | Last restart time | Never | | Oom restarts | 0 | | Hash restarts | 0 | | Manual restarts | 0 | | Hits | 8554 | | Misses | 1594 | | Blacklist misses [%] | 0 [0%] | | Opcache hit rate | 84.29247142294 | +----------------------+---------------------------------+7 quá thấp hoặc
variables: php: 'opcache.max_accelerated_files': 22000 'opcache.memory_consumption': 961 quá cao, hãy đặt giá trị cao hơn cho mức tiêu thụ bộ nhớ
Hãy nhớ xóa các tệp
variables: php: 'opcache.max_accelerated_files': 22000 'opcache.memory_consumption': 962 sau khi bạn hoàn thành việc này
Tệp .platform.app.yaml
của bạn phải bao gồm một khối tương tự như
variables: php: 'opcache.max_accelerated_files': 22000 'opcache.memory_consumption': 96
[Mức tiêu thụ bộ nhớ được đặt bằng megabyte. ]
Tắt xác thực dấu thời gian của OPcache
Theo mặc định, OPcache kiểm tra lại mọi tệp trên đĩa mỗi khi được yêu cầu để xem liệu nó có thay đổi hay không và do đó cần được tải lại và lưu lại. Nếu bạn biết mã của mình sẽ không thay đổi bên ngoài triển khai mới, bạn có thể tắt kiểm tra đó và thường nhận được một cải tiến nhỏ về hiệu suất. Nếu bạn đã tắt xác thực dấu thời gian của OPcache, bạn cần xóa OPcache Rõ ràng khi triển khai [có thể thực hiện việc này bằng cách khởi động lại PHP-FPM]
Lưu ý rằng một số ứng dụng tạo mã PHP khi chạy dựa trên cấu hình người dùng. Nếu ứng dụng của bạn làm như vậy, bạn không thể tắt xác thực dấu thời gian vì nó sẽ ngăn không cho tải các bản cập nhật cho mã đã tạo
Xác thực dấu thời gian có thể bị vô hiệu hóa với cài đặt
variables: php: 'opcache.max_accelerated_files': 22000 'opcache.memory_consumption': 964 và cách dễ nhất để làm như vậy là thông qua
.platform.app.yaml
variables: php: 'opcache.validate_timestamps': 0
Tối ưu hóa mã của bạn
Cũng có thể mã của riêng bạn đang hoạt động nhiều hơn mức cần thiết. Lập cấu hình và tối ưu hóa ứng dụng PHP là một chủ đề lớn hơn nhiều so với ở đây, nhưng Web PaaS khuyên bạn nên bật Blackfire. io trên dự án của bạn để xác định những điểm chậm nào có thể được tìm thấy và giải quyết
Cơ quan web Pixelant cũng đã xuất bản một công cụ phân tích nhật ký cho Web PaaS. Nó chỉ hoạt động cho các tập lệnh PHP, nhưng cung cấp trực quan hóa tốt và hiểu biết sâu sắc về hoạt động của trang web của bạn, có thể đề xuất các địa điểm để tối ưu hóa hơn nữa cấu hình của bạn và cung cấp hướng dẫn về thời điểm tăng quy mô kế hoạch của bạn. [Lưu ý rằng công cụ này được duy trì bởi bên thứ 3, không phải bởi Web PaaS. ]
Bạn có thấy hướng dẫn này hữu ích không?
có không
Vui lòng đưa ra bất kỳ đề xuất nào để cải thiện tài liệu này
Mọi phản hồi của bạn về hình ảnh, nội dung hay cấu trúc, hãy chia sẻ để chúng ta cùng nhau hoàn thiện