$1000 Bounty for Features (or put my money where my mouth is ;)
ezmobius at gmail.com
Thu Mar 1 05:40:54 MSK 2007
We currently have 160 virtual servers all running nginx proxying to
mongrel clusters and nginx is in the heart of our architecture. I
wanted to offer to sponsor the development of 2 specific features
that we really would like to have in nginx.
I'd like to sponsor these features by donating $1000 US dollars to
your efforts. Nginx is my absolute favorite webserver and it is a
core part of our platform. These 2 features would make my life much
easier and would benefit anyone who uses Nginx and Mongrel together.
You would make me and a lot of others very happy people if we could
get these features supported.
1. Connection rate limits for proxy backends.
Since Rails is not threadsafe and locks the Mongrel it runs in during
each dynamic request, it would be way better if we could limit the
connection rate per proxy backend. RIght now nginx will continue to
pile requests onto a mongrel even if it is busy causing requests to
queue up in threads in mongrel waiting for their turn to lock the
mutex and do a dispatch. I would much rather be able to set a
connection rate of 1 or 2 per mongrel and have the requests queue in
nginx, which is much more efficient since nginx is event driven.
2. A way to turn off the buffering of file uploads so that backends
can handle the upload instead of nginx.
I had a serious problem yesterday when a corrupted .png file was
uploaded, I had 6 mongrel backends behind nginx, Nginx gave the
bad .png to the first Mongrel and the bad png plus some error in the
code caused a segfault in Mongrel. So then Nginx recovered and sent
the same png file to the next mongrel and it segfaulted and on and
on. So one bad file upload that caused mongrel to segfault made *all*
the mongrel backends segfault because it retried each backend.
I would really like a setting that that allows me to turn off the
buffering of file uploads altogether if I want. This would allow me
to handle upload progress in a backend as well as avert this problem
where a bad png file can cause nginx to serve the same file to all
backends, killing them all with segfaults. These segfaults are not
nginx's problem I realize but having an option to turn this off will
let me better handle this kind of thing.
Thanks for your time Igor, and many thanks for Nginx! I hope that
you will accept my offer ;)
-- Ezra Zygmuntowicz
-- Lead Rails Evangelist
-- ez at engineyard.com
-- Engine Yard, Serious Rails Hosting
-- (866) 518-YARD (9273)
More information about the nginx