Tôi đang cố hiểu điều gì khiến Nginx quá nhanh và tôi có một vài câu hỏi.nginx: Đa luồng của nó nhưng sử dụng nhiều quy trình?
Như tôi đã hiểu, Apache hoặc sinh ra một quy trình mới để phục vụ mỗi yêu cầu HOẶC sinh ra một luồng mới để phục vụ cho mỗi yêu cầu. Vì mỗi chuỗi mới chia sẻ không gian địa chỉ ảo nên việc sử dụng bộ nhớ sẽ tăng lên nếu có một số yêu cầu đồng thời sắp tới.
Nginx giải quyết điều này bằng cách chỉ thực hiện một quy trình nghe (Master), với một chuỗi thực hiện đơn VÀ 2 hoặc 3 (số là cấu hình) quy trình công nhân. Quy trình/luồng chính này đang chạy vòng lặp sự kiện. Có hiệu lực chờ đợi cho bất kỳ yêu cầu đến. Khi một yêu cầu đến trong nó đưa ra yêu cầu đó cho một trong các quy trình công nhân.
Xin vui lòng sửa tôi nếu hiểu biết ở trên của tôi là không đúng
Nếu ở trên là chính xác, sau đó tôi có một vài câu hỏi:
1.) Không phải là quá trình lao động sẽ đẻ trứng nhiều chủ đề và sẽ chạy vào cùng một vấn đề như apache?
2.) Hoặc là nginx nhanh vì kiến trúc dựa trên sự kiện của nó sử dụng nonblocking-IO bên dưới tất cả. Có lẽ quy trình công nhân sinh ra các chủ đề làm chỉ không chặn-IO, phải không?
3.) "Chính xác" là "kiến trúc dựa trên sự kiện" nào, ai đó có thể thực sự đơn giản hóa nó, cho những người như tôi hiểu. Liệu nó chỉ liên quan đến non-blocking-io hay cái gì khác nữa?
Tôi có một tham chiếu đến c10k, tôi đang cố gắng trải qua nó, nhưng tôi không nghĩ về kiến trúc dựa trên sự kiện của nó. nó có vẻ nhiều hơn cho nonblocking IO.
IO không yêu cầu kiến trúc dựa trên sự kiện. –
FYI - Chỉ trong trường hợp bạn quan tâm đến việc đào sâu hơn - Tôi đã viết câu trả lời cùng với các tài liệu khác + video trên đây: http://planetunknown.blogspot.com/2011/02/why-nginx-is-faster- than-apache.html – PlanetUnknown