2013-10-02 172 views
5

請考慮以下情況:您正在部署可提供1個請求/秒的應用程序。如果我在1秒內發送10個請求會發生什麼?我寫了一個簡單的應用程序來測試:https://github.com/amezhenin/nginx_slow_upstream。 此測試顯示您的請求將被髮送_in_exact_same_order_。Nginx是否具有獨立的請求排隊機制?

現在,這看起來像Nginx有一些請求隊列,但我的同事(管理員)說,在Nginx中沒有任何隊列。所以我在這裏寫了另一個關於epoll的問題:Does epoll preserve the order in which fd's was registered?。從那個討論中我發現epoll確實保留了請求的順序。

我有兩個問題:

1)是否有上述推理/代碼的任何錯誤?

2)Nginx是否在epoll上有某種排隊請求?或者Nginx使用純粹的epoll功能?

謝謝,對不起我的英文:)

回答

3

Nginx的沒有它自己的隊列,而不是他推的所有請求的應用服務器,其中有listen插座:

#include <sys/types.h> 
#include <sys/socket.h> 

int listen(int sockfd, int backlog); 

(http://linux.die.net/man/2/listen) 

backlog定義這個隊列的長度。你可以閱讀完整的對話here