Question

Consider the following situation: you are deploying application that can serve 1 req./sec. What would happen if I send 10 request in 1 second? I wrote simple app to test that: https://github.com/amezhenin/nginx_slow_upstream . This test shows that your requests will be served _in_exact_same_order_ they were sent.

For now, this looks like Nginx have some kind of queue for requests, but my colleague(administrator) sayd that there is no any queues in Nginx. So I wrote another question about epoll here: Does epoll preserve the order in which fd's was registered? . From that discussion I figured that epoll does preserves the order of requests.

I have two questions:

1) Is there any mistakes in reasoning/code above?

2) Does Nginx have some sort of queue for requests on top of epoll? Or Nginx uses pure epoll functionality?

Thank you, and sorry for my English :)

Was it helpful?

Solution

Nginx doesn't have it own queue, instead it pushes all requests to the application server, which have a listen socket:

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

int listen(int sockfd, int backlog);

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

backlog defines the length of this queue. You can read the full conversation here.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top