2014-09-14 13 views
44

Tôi muốn biết chính xác nó có nghĩa là gì khi một máy chủ web mô tả chính nó như là một máy chủ web trước ngã ba. Tôi có một vài ví dụ như unicorn cho ruby ​​và gunicorn cho python.Chính xác mô hình máy chủ web sơ bộ là gì?

Cụ thể hơn, đó là những câu hỏi sau:

  • vấn đề gì mô hình này giải quyết?
  • Điều gì xảy ra khi máy chủ web sơ bộ trước bắt đầu?
  • Làm cách nào để xử lý yêu cầu?

Ngoài ra, một câu hỏi cụ thể hơn cho kỳ lân/gunicorn:

Hãy nói rằng tôi có một webapp mà tôi muốn chạy với (g) kỳ lân. Khi khởi tạo, webapp sẽ thực hiện một số công cụ khởi tạo (ví dụ: điền vào các mục cơ sở dữ liệu bổ sung). Nếu tôi định cấu hình (g) kỳ lân với nhiều công nhân, công cụ khởi chạy có được chạy nhiều lần không?

Trả lời

45

Pre-forking về cơ bản có nghĩa là một bậc thầy tạo ra nhánh xử lý từng yêu cầu. Một ngã ba là một quá trình * nix hoàn toàn riêng biệt.

Cập nhật theo nhận xét bên dưới. pre trong pre-fork có nghĩa là các quy trình này được chia nhỏ trước khi có yêu cầu. Tuy nhiên, chúng có thể được tăng hoặc giảm khi tải tăng lên.

Có thể sử dụng tính năng tiền tố trước khi bạn có thư viện KHÔNG an toàn. Nó cũng có nghĩa là các vấn đề trong một yêu cầu gây ra vấn đề sẽ chỉ ảnh hưởng đến quá trình mà chúng được xử lý bởi và không phải toàn bộ máy chủ.

Khởi tạo chạy nhiều lần phụ thuộc vào những gì bạn đang triển khai. Thông thường, tuy nhiên các hồ bơi kết nối và các công cụ có tính chất đó sẽ tồn tại cho mỗi quá trình.

Trong mô hình luồng, chủ cũng sẽ tạo các chuỗi trọng lượng nhẹ hơn để gửi yêu cầu. Nhưng nếu một chủ đề gây ra vấn đề lớn nó có thể có hậu quả cho quá trình tổng thể.

Với các công cụ như Nginx, MPM sự kiện Apache 2.4 hoặc gevent (có thể được sử dụng với Gunicorn), điều này không đồng bộ nghĩa là quy trình có thể xử lý hàng trăm yêu cầu trong khi không chặn.

+12

Tôi đã có cùng một nghi ngờ về ý nghĩa của "tiền bối". Tôi cho rằng nó có nghĩa là giả mạo một số loại, một cách tự nhiên, nhưng phần "tiền" đã gây nhầm lẫn cho tôi. Tôi tìm thấy ở đây http://www.abbreviations.com/prefork rằng phần "tiền" thực sự có nghĩa là các quy trình công nhân được tạo ra trước, do đó thời gian đó không bị lãng phí khi chỉ cần một công nhân. Làm cho tôi cảm thấy rất nhiều :) –

+1

//, @ElNinjaTrepador, tại sao không thêm một câu trả lời riêng biệt? Điều đó càng ít hiểu hơn đối với tôi, ít nhất, và nó có thể giúp người khác nhiều hơn nếu nhận xét đó trở nên nổi bật hơn. –

+2

Tôi đã cập nhật câu trả lời để thêm thông tin thêm một chút về tiền trước trong ngã ba. @ElNinjaTrepador cảm ơn vì đã chỉ ra điều này tôi đã không nhận ra rằng điều đó không được biết rõ. –

Các vấn đề liên quan