Upload module + PHP causes active connections to continually increase

Hi all,

I’m developing a site using the upload module v2.0.11 ( from
http://www.grid.net.ru/nginx/upload.en.html ) and just turned on the
Stub Status module. I noticed that each time I send an upload form,
the “active connections” number in the stats increments by one.

For example, if I start up Nginx and visit the status, I get:

Active connections: 1
server accepts handled requests
1 1 1
Reading: 0 Writing: 1 Waiting: 0

After opening the upload form in a new tab, uploading a file, and
getting a response from the PHP script, I get:

Active connections: 2
server accepts handled requests
3 3 3
Reading: 0 Writing: 2 Waiting: 0

After uploading another file, I get:

Active connections: 3
server accepts handled requests
4 4 5
Reading: 0 Writing: 3 Waiting: 0

I’m concerned that the “active connections” number keeps increasing
(as well as the “writing” number), and never seems to go down. Does
this mean that Nginx is holding extra connections (and possibly extra
file descriptors) open? I’m wondering if this will be a problem once I
deploy the site and the server is running for long periods of time.
Could it reach some system maximum of open file descriptors?

I thought it might be a problem with my fastcgi setup, but the active
connections number doesn’t increase when I visit regular (non-upload)
PHP pages. Also, the problem didn’t occur when I set @accept (in
config below) to redirect to a .txt file instead of a .php file. In
that case, the file appears in the upload directory, but I get a 405
error because Nginx rejects POSTs to static files.

The relevant section of my nginx.conf is:

location /accept {
upload_pass @accept;
upload_store /var/www/fbp/uploads/files;
upload_set_form_field “$upload_field_name[name]” “$upload_file_name”;
upload_set_form_field “$upload_field_name[content_type]”
“$upload_content_type”;
upload_set_form_field “$upload_field_name[tmp_file]”
“$upload_tmp_path”;
upload_aggregate_form_field “$upload_field_name[size]”
“$upload_file_size”;
upload_pass_form_field “key”;
}

location @accept {
rewrite ^(.*)$ /accept.php last;
}

location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

My accept.php is simply:

<?php die('accept.php'); ?>

After the upload, the files appear in the uploads/files directory, and
the text ‘accept.php’ is properly returned to the browser.

Does anyone know what could cause this, and whether I should be
concerned? Any help would be appreciated!

Thanks!
Alan

Support wrote:

server accepts handled requests

file descriptors) open? I’m wondering if this will be a problem once I
The relevant section of my nginx.conf is:
}
}
concerned? Any help would be appreciated!
Using this patch or switching off keepalive might solve the problem.

Seeing the same problem here. Same version of upload, nginx is 0.8.33.
Open file descriptors are not being closed after upstreaming to fastcgi.
Have a link to that patch? I’ll be happy to test it out. :slight_smile:

Posted at Nginx Forum:

icqheretic wrote:

Seeing the same problem here. Same version of upload, nginx is 0.8.33. Open file descriptors are not being closed after upstreaming to fastcgi. Have a link to that patch? I’ll be happy to test it out. :slight_smile:

May be this can help.

Excellent – the patch works great for me.

On Fri, Feb 19, 2010 at 2:39 PM, Matthieu T.

Thanks, Valery. Patch fixed our problem.

Posted at Nginx Forum: