$1000 Bounty for Features (or put my money where my mouth is ;)

Ezra Zygmuntowicz ezmobius at gmail.com
Thu Mar 1 05:40:54 MSK 2007

Hi Igor-

	 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 mailing list