Tối ưu hóa php fpm apache

Bài viết mô tả về điều chỉnh Apache và xem xét quá trình xử lý của nó để xử lý một số yêu cầu từ máy khách. Nó hướng dẫn tắt các mô-đun nào của Apache và nhu cầu thay đổi cài đặt tài nguyên

Xem lại Trạng thái Apache


Apache2Buddy

Tập lệnh Apache2Buddy, tương tự như MySQLTuner, xem xét thiết lập Apache của bạn và đưa ra đề xuất dựa trên bộ nhớ xử lý Apache và RAM tổng thể của bạn. Mặc dù đây là một chương trình khá cơ bản, tập trung vào chỉ thị MaxClients, nhưng Apache2Buddy rất hữu ích và có thể chạy thông qua một lệnh duy nhất

cuộn tròn -sL https. // thô. githubusercontent. com/richardforth/apache2buddy/master/apache2buddy. làm ơn. perl

Mô-đun đa xử lý (MPM)

Trước tiên, hãy sao lưu tệp cấu hình Apache của bạn trước khi thực hiện bất kỳ thay đổi nào đối với tệp đó. Chạy lệnh sau để thực hiện tương tự tùy thuộc vào hệ thống bạn đang sử dụng.  

Trên Debian/Ubuntu

cp /etc/apache2/apache2. cấu hình ~/Apache2. conf. sao lưu

Trên CentOS/Fedora

cp /etc/httpd/conf/httpd. cấu hình ~/httpd. conf. sao lưu

Trong thực tế, chức năng mô-đun của Apache được mở rộng bởi các MPM cho phép chúng tôi quyết định cách sửa đổi cấu hình máy chủ Apache chẳng hạn như máy chủ web để liên kết với các cổng mạng, các yêu cầu từ máy khách được chấp nhận và các tiến trình con (và các luồng, cách khác)

Có ba MPM khác nhau được cung cấp bởi Apache như - Worker MPM, Event MPM, Prefork MPM. Tốc độ và khả năng mở rộng của httpd/apache2 có thể bị ảnh hưởng, tùy thuộc vào lựa chọn

  • Nhiều tiến trình con đã được sử dụng trong Worker MPM với nhiều luồng mỗi. Mỗi luồng xử lý một kết nối tại một thời điểm. Worker MPM là một lựa chọn tốt cho các máy chủ có lưu lượng truy cập cao vì dung lượng bộ nhớ nhỏ hơn so với MPM prefork

  • MPM sự kiện cũng được phân luồng như MPM công nhân, ngoại trừ nó cho phép phục vụ đồng thời nhiều yêu cầu hơn bằng cách chuyển một số công việc xử lý sang các luồng hỗ trợ và giải phóng các luồng chính để xử lý các yêu cầu mới

  • Nhiều quy trình con đã được sử dụng trong Prefork MPM với mỗi luồng một luồng. Mỗi quá trình xử lý một kết nối tại một thời điểm. Trên nhiều hệ thống, so với worker, prefork có tốc độ nhanh hơn nhưng lại ngốn nhiều bộ nhớ hơn. Thiết kế không luồng của Prefork có một số lợi thế hơn worker trong một số trường hợp. nó có thể được sử dụng với các mô-đun của bên thứ ba không an toàn cho luồng và việc gỡ lỗi trên các nền tảng có hỗ trợ gỡ lỗi luồng kém sẽ dễ dàng hơn

Lệnh kiểm tra MPM được cài đặt Apache của bạn sử dụng

httpd -V

Để thay đổi điều này, chúng ta cần chỉnh sửa tệp conf MPM. Vị trí tập tin như sau

# /etc/httpd/conf. mô-đun. d/00-mpm. conf          [Trên hệ thống dựa trên RedHat/CentOS]

# /etc/apache2/mods-available/. tải   [Trên hệ thống dựa trên Debian/Ubuntu]

Ở đâu Có thể là mpm_event, mpm_worker, cho mpm_prefork

Mở tệp và bỏ ghi chú dòng tải mô-đun mong muốn như

LoadModule mô-đun mpm_event_module/mod_mpm_event. Vì thế

Bây giờ, hãy khởi động lại máy chủ web cũng như dịch vụ php-fpm (hoặc php5-fpm) mới được cài đặt. Lệnh như sau

Trên RedHat/CentOS

# systemctl khởi động lại httpd php-fpm && systemctl bật httpd php-fpm

Trên Debian/Ubuntu

# systemctl khởi động lại apache2 php5-fpm && systemctl kích hoạt apache2 php5-fpm

Chúng ta cần đặt khối như được mô tả bên dưới, bên trong /etc/httpd/conf/httpd. conf hoặc /etc/apache2/apache2. conf, tùy thuộc vào việc bạn đang sử dụng CentOS hay Debian

Xin lưu ý rằng cùng một nguyên tắc áp dụng cho tất cả các MPM – chúng tôi đang sử dụng worker tại đây

Cấu hình cung cấp 8000 kết nối đồng thời

ServerLimit               250

Máy chủ khởi động              10

MinSpareThreads     75

MaxSpareThreads    250

ThreadLimit               64

ThreadsPerChild         32

MaxRequestWorkers   8000

MaxConnectionsPerChild 10000

Các chi tiết về các tham số được mô tả dưới đây

Giới hạn máy chủ

Khai báo số lượng tiến trình apache đang chạy tối đa. Nếu bạn thay đổi giá trị này, daemon sẽ yêu cầu khởi động lại

Máy chủ khởi động

Số lượng quy trình ban đầu để bắt đầu khi bắt đầu daemon apache

MinSpareThreads/MaxSpareThreads

Điều này quy định số lượng luồng có thể không hoạt động mà không bị giết

chủ đề mỗi đứa trẻ

Có bao nhiêu luồng có thể được tạo cho mỗi quy trình. Có thể thay đổi trong quá trình tải lại

Chủ đềGiới hạn

Trong thời gian chạy, ThreadsPerChild có thể được định cấu hình cao bằng giá trị này. Nếu bạn thay đổi giá trị này, daemon sẽ yêu cầu khởi động lại

Yêu cầu tối đaCông nhân

Điều này tuyên bố có bao nhiêu kết nối đồng thời chúng tôi cung cấp. Chia cho ThreadsPerChild, bạn nhận được giá trị ServerLimit phù hợp. Có thể ít hơn ServerLimit * ThreadsPerChild để dự trữ một số tài nguyên có thể được sử dụng trong thời gian chạy với việc tăng MaxRequestWorkers và tải lại cấu hình

MaxConnectionsPerChild

Xác định số lượng Kết nối mà một quy trình có thể xử lý trong suốt thời gian tồn tại của nó (số lượng kết nối được tính một lần). Sau đó, nó sẽ bị giết. Nó được sử dụng để ngăn chặn khả năng rò rỉ bộ nhớ apache. Nếu được đặt thành 0 thì thời gian tồn tại là vô hạn

Liệu PHP

FPM là trình quản lý quy trình để quản lý FastCGI trong PHP. Apache vận chuyển với mod_php theo mặc định và hoạt động với tất cả các máy chủ web chính .

Là PHP

Bạn có thể nhận thấy PHP-FPM làm cho trang web thử nghiệm của chúng tôi nhanh hơn gần 350% về thời gian tải . Ngoài ra, nó làm cho trang web sử dụng tài nguyên hiệu quả gấp đôi so với mod_php. PHP-FPM, một trong những cách mới nhất để sử dụng PHP kết hợp với máy chủ web, là một triển khai PHP FastCGI thay thế.

Cách tăng PHP

Cách thay đổi giới hạn bộ nhớ .
Xác định vị trí php. ini được sử dụng bởi máy chủ web của bạn. Bạn có thể nhấp vào liên kết "thông tin thêm" trên phần PHP của trang trạng thái Drupal. .
Chỉnh sửa tham số memory_limit trong php. ini (thường nằm trong phần có tên là Giới hạn tài nguyên). .
Khởi động lại Apache

Là PHP

PHP-FPM nhanh hơn các phương pháp dựa trên CGI truyền thống , chẳng hạn như SUPHP, dành cho môi trường PHP nhiều người dùng. Nó không làm quá tải bộ nhớ của hệ thống với PHP từ các quy trình của Apache. Các tính năng PHP-FPM bao gồm. Quá trình thích nghi sinh sản.