Hello.
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:
http://stackoverflow.com/questions/19114001/does-epoll-preserve-the-order-in-which-fds-was-registered
. From that discussion I figured that epoll does preserves the order of
requests.
I have two questions:
- Is there any mistakes in reasoning/code above?
- 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 
Posted at Nginx Forum:
http://forum.nginx.org/read.php?2,243372,243372#msg-243372
Hello!
On Wed, Oct 02, 2013 at 10:04:23AM -0400, amehzenin wrote:
colleague(administrator) sayd that there is no any queues in Nginx. So I
wrote another question about epoll here:
http://stackoverflow.com/questions/19114001/does-epoll-preserve-the-order-in-which-fds-was-registered
. From that discussion I figured that epoll does preserves the order of
requests.
I have two questions:
- Is there any mistakes in reasoning/code above?
- Does Nginx have some sort of queue for requests on top of epoll? Or Nginx
uses pure epoll functionality?
There is no queue in nginx, but there is queue in a listen socket
of your backend app. It’s called “listen queue” or “backlog” and
likely it’s what preserves a request order for you.
–
Maxim D.
http://nginx.org/en/donation.html
Maxim D. Wrote:
nginx mailing list
[email protected]
http://mailman.nginx.org/mailman/listinfo/nginx
You meen application server has listen socket:
#include <sys/types.h>
#include <sys/socket.h>
int listen(int sockfd, int backlog);
(http://linux.die.net/man/2/listen)
And backlog defines the length of this queue. Nginx pushes requests to
app-server as they come and app-server take this requests from his own
queue
when he is ready to serve next request. Am I right?
Posted at Nginx Forum:
http://forum.nginx.org/read.php?2,243372,243406#msg-243406
Hello!
On Thu, Oct 03, 2013 at 10:26:33AM -0400, amehzenin wrote:
Maxim D. Wrote:
There is no queue in nginx, but there is queue in a listen socket
of your backend app. It’s called “listen queue” or “backlog” and
likely it’s what preserves a request order for you.
[…]
app-server as they come and app-server take this requests from his own queue
when he is ready to serve next request. Am I right?
Yes.
–
Maxim D.
http://nginx.org/en/donation.html