PHP là điều chỉnh hiệu suất
Khu đổi mới để thử nghiệm các công nghệ tiên tiến của chúng tôi trước khi chúng chính thức được tung ra thị trường
Truy cập nhanh Show
Điều chỉnh hiệu suất Đóng góp Chia sẻ Twitter Facebook LinkedIn In PHP
Cập nhật lần cuối ngày 2 tháng 6 năm 2022 khách quanSau 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 Đảm bảo rằng bộ đệm của bộ định tuyến được cấu hình đúng cáchMặ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 đề Tiêu đề bộ đệm nội dung tĩnh được đặt bằng cách sử dụng khóa cd /tmp curl -sLO https://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 FPMPHP-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ướcPHP7. 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 https://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 https://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 https://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 OPcachePHP5. 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 https://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 https://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à
Để 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 https://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 https://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 https://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 https://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 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 OPcacheTheo 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ạnCũ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 Làm cách nào để cải thiện hiệu suất ứng dụng PHP?Trong bài viết này, chúng ta sẽ tìm hiểu cách tăng hiệu suất trang web bằng PHP. . Sử dụng các hàm PHP gốc Kích hoạt OPCache trên Máy chủ PHP Giảm thiểu nội dung tĩnh & bộ nhớ đệm Nâng cấp lên phiên bản PHP mới nhất Hiểu tắc nghẽn hiệu suất Tối ưu hóa mã Làm cách nào để viết mã được tối ưu hóa trong PHP?Mẹo để tối ưu hóa tập lệnh PHP . Tận dụng các hàm PHP gốc. . Sử dụng JSON thay vì XML. . Kiếm tiền từ các kỹ thuật lưu trữ. . Cắt bỏ các tính toán không cần thiết. . Sử dụng isset(). Cắt bỏ các lớp không cần thiết. . Tắt thông báo gỡ lỗi. . Đóng kết nối cơ sở dữ liệu Làm cách nào để thay đổi cài đặt PHP FPM?Dưới đây chúng tôi trình bày cách điều chỉnh cài đặt PHP-FPM theo tải lưu lượng trên mỗi tài khoản cPanel. . Đăng nhập WHM với quyền Root Từ menu, tìm kiếm và chọn MultiPHPManager Chọn Bật để bật PHP-FPM cho tất cả các tài khoản cPanel. . Chọn Tùy chọn nhóm bên cạnh miền được chỉ định Sửa đổi cài đặt PHP-FPM cho miền |