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