Các quy trình Apache tồn tại được bao lâu?


9

Khi apache tạo ra một quy trình cho mod-php, nó tồn tại bao lâu? Liệu quy trình có chết ngay khi phản hồi được gửi đi hay nó sẽ tồn tại cho đến khi trình duyệt nhận được phản hồi đầy đủ?

Câu trả lời:


9

Nếu bạn đang sử dụng mod-php, thì có khả năng bạn đang sử dụng preforkMPM, sẽ sinh ra các tiến trình con để xử lý các yêu cầu. Số lượng và thời gian sống của những đứa trẻ này được điều chỉnh bởi các chỉ thị trong tệp chính apache2.conf(hoặc httpd.conf, tùy thuộc vào bản phân phối của bạn).

Tìm phần giống như thế này (giá trị của bạn có thể thay đổi):

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

Apache sinh ra StartServerstrẻ em tự động. Các quy trình này sẽ không hoạt động cho đến khi có yêu cầu. Nếu trẻ em bận rộn, nó sẽ sinh ra để MaxClientstrẻ xử lý tải, cố gắng duy trì MinSpareServerstrẻ nhàn rỗi để nhận yêu cầu mới. Một khi mọi thứ dịu xuống, những đứa trẻ nhàn rỗi sẽ bị giết chết cho đến khi đếm ngược MaxSpareServers.

Các bit bạn hỏi về được xử lý bởi MaxRequestsPerChild. Đặt ở mức 0, điều này có nghĩa là trẻ em có thể sống mãi mãi, đó là giá trị mặc định trong hầu hết các cài đặt apache. Đặt ở bất cứ điều gì khác, điều đó có nghĩa là mỗi tiến trình con sẽ bị giết và khởi động lại, bất kể tải hiện tại, một khi nó đã xử lý số lượng yêu cầu đó.

Thêm chi tiết về MPM prefork tại đây: http://httpd.apache.org/docs/2.2/mod/prefork.html


Cảm ơn, điều đó cho tôi hiểu rõ hơn về Apache. Câu hỏi cụ thể của tôi là: khi phản hồi được gửi lại cho khách hàng, quá trình con làm gì? Có phải nó đang chờ để khách hàng xác nhận hoặc có thể xử lý ngay một yêu cầu mới không?
Jamie Clinton

Khi một phản hồi được gửi và máy khách xác nhận nó, kết nối TCP sẽ mở thêm 15 giây (tôi nghĩ) theo mặc định. Trong thời gian đó, đứa trẻ sẽ là người đầu tiên nhận thêm bất kỳ yêu cầu HTTP nào từ cùng một khách hàng. Nếu không nhận được thì kết nối TCP sẽ bị đóng và đứa trẻ bị xử lý theo các quy tắc trên. Thông thường, nó vẫn còn sống và quay trở lại hồ bơi nhàn rỗi. Hành vi này có thể được sửa đổi bởi cả máy khách và máy chủ. (Chẳng hạn, có thể nên đóng kết nối ngay lập tức)
SmallClanger

Ngoài ra, nếu bạn chưa sử dụng nó, wireshark.org là một công cụ tuyệt vời để phân tích lưu lượng giữa máy khách và máy chủ. Nó sẽ cung cấp cho bạn cái nhìn sâu sắc về những gì xảy ra dưới mui xe.
SmallClanger

4

httpd không rẽ nhánh một quá trình cho mod_php. Nó tạo ra một quá trình cho chính nó, có mod_php được nhúng trong nó. Đứa trẻ sẽ sống cho đến khi nó hoàn thành MaxRequestsPerChildyêu cầu. Bản thân mod_php sẽ tiếp tục xử lý từng yêu cầu đối với tập lệnh PHP cho đến khi tập lệnh thoát hoặc vượt quá giới hạn thời gian.

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.