unicorn Ruby/Rack server user+dev discussion/patches/pulls/bugs/help
 help / color / mirror / code / Atom feed
* Sustained queuing on one listener can block requests from other listeners
@ 2020-04-15  5:06 Stan Hu
  2020-04-15  5:26 ` Eric Wong
  0 siblings, 1 reply; 6+ messages in thread
From: Stan Hu @ 2020-04-15  5:06 UTC (permalink / raw)
  To: unicorn-public

My unicorn.rb has two listeners:

listen "127.0.0.1:8080", :tcp_nopush => false
listen "/var/run/unicorn.socket", :backlog => 1024

We found that because of the greedy attempt to accept new connections
before calling select() in
https://github.com/defunkt/unicorn/blob/981f561a726bb4307d01e4a09a308edba8d69fe3/lib/unicorn/http_server.rb#L707-L714,
listeners on another socket stall out until the first listener is
drained. We would expect Unicorn to round-robin between the two
listeners, but that doesn't happen as long as there is work to be done
for the first listener. We've verified that deleting that `redo` block
fixes the problem.

What do you think about the various options?

1. Only running that redo block if there is one listener
2. Removing the redo block entirely

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-04-16  9:24 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-15  5:06 Sustained queuing on one listener can block requests from other listeners Stan Hu
2020-04-15  5:26 ` Eric Wong
2020-04-16  5:46   ` Stan Hu
2020-04-16  6:59     ` Eric Wong
2020-04-16  7:24       ` Stan Hu
2020-04-16  9:24         ` [PATCH] prevent single listener from monopolizing a worker Eric Wong

Code repositories for project(s) associated with this public inbox

	https://yhbt.net/unicorn.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).