Điểm:0

Apache gây tăng đột biến tải lớn sau khi khởi động lại

lá cờ cn

Máy chủ của tôi đang chạy Ubuntu 18.04.5 LTS, với ngăn xếp LAMP (PHP 7.4) và phiên bản apache 2.4.29 sử dụng Prefork MPM. Máy chủ của tôi có 16 CPU và 29GB RAM. Máy chủ này lưu trữ 258 trang web.

Bất cứ khi nào tôi khởi động lại máy chủ của mình, tôi nhận thấy (sử dụng lệnh trên cùng) rằng apache đang tạo ra một lượng lớn quy trình. Điều này hoàn toàn quá tải máy chủ. Điều này CHỈ xảy ra khi tôi khởi động lại máy chủ hoặc tôi dừng apache theo cách thủ công (dừng dịch vụ apache2) rồi khởi động apache (khởi động dịch vụ apache2).

Thông thường, đây là đầu ra của top (trong giờ bình thường):

nhập mô tả hình ảnh ở đây

Sau khi khởi động lại hoặc dừng và khởi động apache theo cách thủ công, tải trung bình tăng lên hơn 126,4! Nó từ từ (khoảng 10-15 phút) trở lại bình thường. Trong 5 phút đầu tiên sau khi khởi động lại hoặc dừng và khởi động apache, tải chỉ tăng đều đặn cho đến khi đạt khoảng 126-130.

Đây là cấu hình MPM của tôi (/etc/apache2/mods-enabled/mpm_prefork.conf):

<IfModule mpm_prefork_module>
     StartServers           5
     MinSpareServers        5
     MaxSpareServers        10
     MaxRequestWorkers      150
     MaxConnectionsPerChild 0
 </IfModule>

Ngoài ra, KeepAlive đang BẬT, MaxKeepAliveRequests là 100 và KeepAliveTimeout là 2.

Điều rất lạ là tôi đã tạo một bản sao chính xác của máy chủ và đặt một số trang web (6 trang web) trên bản sao và khi tôi khởi động lại hoặc khởi động và dừng apache trên máy chủ sao chép này, hiện tượng này không xảy ra. Đây là một bản sao CHÍNH XÁC của máy chủ được đề cập ở trên, nó chỉ lưu trữ 6 trang web (CÁCH ít lưu lượng truy cập hơn) thay vì 258.

Sự cố này có thể do quá nhiều kết nối máy khách đang chờ apache phản hồi trong quá trình khởi động lại và khi máy chủ apache cuối cùng hoạt động trở lại, nó sẽ tràn ngập apache với các kết nối?

Việc tăng các giá trị trong cấu hình MPM của tôi có thể giúp ích cho việc này không? Tôi đã kiểm tra nhật ký và tôi chưa bao giờ xem qua MaxRequestWorkers.

Michael Hampton avatar
lá cờ cz
Điều hiển nhiên đầu tiên cần làm là loại bỏ mpm_prefork (và mod_php) hiệu suất thấp và chuyển sang php-fpm và mod_event (hoặc tốt hơn là nginx).
lá cờ cn
Đây là máy chủ sản xuất, việc chuyển sang mod_event có thể gây ra sự cố không? Tôi chỉ không muốn chuyển đổi và đưa các trang web của khách hàng xuống trong quá trình này.
Michael Hampton avatar
lá cờ cz
Làm hầu như bất cứ điều gì có thể gây ra vấn đề. Nhưng đây là điều mà bạn rõ ràng cần phải làm trong một thời gian rất dài, có thể là nhiều năm, vì vậy bạn nên bắt đầu lập kế hoạch và thử nghiệm để tìm hiểu những vấn đề đó có thể xảy ra.
ezra-s avatar
lá cờ ru
Tôi đồng ý với Michael Hampton, ngoại trừ phần nginx mà anh ấy tận dụng mọi cơ hội để quảng bá. Apache không gây ra điều đó, php thì có. Vấn đề là sẽ khó hơn nếu bạn đặt tất cả lại với nhau. Nếu đây là sản xuất, thì tôi khuyên bạn nên thử nghiệm thay thế bằng apache w/ mpm_event + php-fpm xử lý PHP, không chỉ bạn sẽ có nhiều quyền kiểm soát hơn đối với cấu hình php của mình và thậm chí có một số cấu hình khác nếu bạn muốn (nhóm fpm) , nhưng bạn cũng sẽ có dấu chân nhỏ hơn từ apache, với một vài quy trình nhưng thay vào đó là nhiều luồng công nhân nếu cần.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.