10 messages in ru.sysoev.nginxRe: $1000 Bounty for Features (or put...
FromSent OnAttachments
Ezra ZygmuntowiczFeb 28, 2007 6:40 pm 
Bob IppolitoFeb 28, 2007 6:48 pm 
Cliff WellsMar 2, 2007 11:30 am 
Ezra ZygmuntowiczMar 2, 2007 11:39 am 
Wayne E. SeguinMar 2, 2007 11:41 am 
Cliff WellsMar 2, 2007 1:12 pm 
Wayne E. SeguinMar 2, 2007 1:20 pm 
Bob IppolitoMar 2, 2007 1:22 pm 
Igor SysoevMar 6, 2007 10:38 am 
Ezra ZygmuntowiczMar 6, 2007 11:04 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: $1000 Bounty for Features (or put my money where my mouth is ;)Actions...
From:Ezra Zygmuntowicz (ezmo@public.gmane.org)
Date:Mar 6, 2007 11:04:26 am
List:ru.sysoev.nginx

On Mar 6, 2007, at 10:39 AM, Igor Sysoev wrote:

On Wed, Feb 28, 2007 at 06:40:54PM -0800, Ezra Zygmuntowicz wrote:

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 ;)

As I have promised I will implement non-bufferred uploads. The backend connections limits will be implemeted too - I had planned long ago.

-- Igor Sysoev http://sysoev.ru/en/

Thank you Igor. I know you had already planned these features and I just wanted to show my support for your great project.