Apache 2.2 mpm_worker: nhiều luồng hơn hoặc nhiều tiến trình hơn?


17

Khi sử dụng MPM Worker trong Apache, bạn có thể sử dụng số lượng tiến trình con và số luồng máy chủ trên mỗi tiến trình con.

Những lợi thế và bất lợi của mỗi là gì? Trong hoàn cảnh nào bạn sẽ tăng cái này hay cái kia?

Câu trả lời:


25

Cho đến nay, đây là những cân nhắc hàng đầu của tôi khi xác định Chủ đề so với Quy trình:

  1. Chủ đề sẽ sử dụng hết bộ nhớ thường trú ít hơn nhiều so với Quy trình. Đúng, với các thư viện được liên kết động, rất nhiều bộ nhớ được chia sẻ giữa Quy trình điều khiển Apache và các quy trình con của nó, tuy nhiên mỗi Quy trình mới sẽ cần khởi tạo tất cả các mô-đun bạn đã bật.

    Điều này có thể dễ dàng kiểm tra bằng cách so sánh mức sử dụng bộ nhớ của từng Quy trình mà bạn có, ví dụ, 5 Quy trình và 1 Chủ đề mỗi hoặc 5 Quy trình và 25 Chủ đề mỗi quy trình. Trong trường hợp của tôi ở đây, mỗi tiến trình con mất khoảng 7 MB bất kể số lượng Chủ đề.

    + Đối với chủ đề

  2. Sẽ mất nhiều thời gian hơn để bắt đầu về thời gian và chu kỳ cpu để tải một Quá trình mới so với thực hiện một Chủ đề. Điều này có thể được kiểm tra bằng cách xác minh số lượng trang được cung cấp qua 'ab'.

    + Đối với chủ đề

  3. Tất cả các Chủ đề của Quy trình đều phụ thuộc vào Quy trình .. Mối quan tâm lớn nhất ở đây là nếu có điều gì đó xảy ra với Quy trình, nó sẽ ảnh hưởng đến tất cả các Chủ đề được liên kết với Quy trình. Nếu bạn đang chạy với một Quy trình duy nhất với một loạt Chủ đề, thì khi Quá trình đó chết, Chủ đề cũng sẽ như vậy. Do đó, nhiều quy trình hơn sẽ gây ra sự phân tách tốt hơn và do đó khả năng chịu "lỗi" lớn hơn nếu bạn muốn.

    + Đối với quy trình

  4. Liên quan đến (3), đối với các mô-đun như PHP, bộ nhớ của chúng được Quá trình tải và chia sẻ trên tất cả các Chủ đề. Điều này có nghĩa là nếu bạn có php với memory_limit được đặt thành 100Mbs với 25 Chủ đề bên dưới, thì ở mức tối đa về mặt kỹ thuật, mỗi Chủ đề sẽ có thể phân bổ tối đa 4 MB mỗi chủ đề (tất nhiên điều đó sẽ không xảy ra theo cách này, một số sẽ hog, một số sẽ chết đói ).

Vì vậy, cuối cùng, nó thực sự phụ thuộc vào trường hợp sử dụng của bạn .. Điều đó có nghĩa là, bạn sẽ muốn tối đa hóa lượng Chủ đề được sử dụng để giảm mức sử dụng bộ nhớ và tăng khả năng phản hồi. Tuy nhiên, bạn sẽ phải cân bằng điều đó với một lượng Quy trình phù hợp để có khả năng chịu lỗi tốt hơn.

Tất nhiên tôi không phải là chuyên gia ở đây vì gần đây tôi chỉ phải quan tâm đến vấn đề này, vì vậy tôi mong muốn được xem những câu trả lời khác có thể xuất hiện ở đây!


1
+1 cho một số thông tin chung tốt. Tuy nhiên, tôi muốn xem chi tiết sâu hơn / cụ thể hơn nếu có thể.
sh-beta
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.