9

次の状況を考えてみましょう: 1 秒あたり 1 要求を処理できるアプリケーションをデプロイしています。1 秒間に 10 件のリクエストを送信するとどうなりますか? それをテストするための簡単なアプリを作成しました: https://github.com/amezhenin/nginx_slow_upstream。このテストは、リクエストが送信された_in_exact_same_order_で処理されることを示しています。

今のところ、これは Nginx がリクエスト用の何らかのキューを持っているように見えますが、私の同僚 (管理者) は、Nginx にはキューがないと言いました。だから私はここに epoll について別の質問を書きました: epoll は fd が登録された順序を保持しますか? . その議論から、epoll はリクエストの順序を保持していると考えました。

2 つの質問があります。

1) 上記の推論/コードに誤りはありますか?

2) Nginx には、epoll の上にリクエスト用のある種のキューがありますか? または、Nginx は純粋な epoll 機能を使用していますか?

ありがとう、そして私の英語でごめんなさい:)

4

1 に答える 1

6

Nginx には独自のキューがありません。代わりに、listenソケットを持つアプリケーション サーバーにすべてのリクエストをプッシュします。

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

int listen(int sockfd, int backlog);

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

backlogこのキューの長さを定義します。会話の全文はこちらで読むことができます。

于 2013-10-03T16:04:04.320 に答える