Client body upload fully occupies worker

python nginx-forum at forum.nginx.org
Fri May 25 13:58:37 UTC 2018


Hi,

While client uploads content into permanent temp file ngx worker doesn't
process any requests until its finished.

Its an issue in case of large files (GBs) uploading since number of parallel
uploads are limited by number of workers.

https://www.nginx.com/blog/thread-pools-boost-performance-9x/ advises to use
aio_write:
"At the moment, offloading to thread pools is implemented only for three
essential operations: the read() syscall on most operating systems,
sendfile() on Linux, and aio_write() on Linux which is used when writing
some temporary files such as those for the cache".

I tried to configure aio_write, but looks that approach won't work for
client body upload.

1. How to configure thread pool usage for client body upload?
2. Could you please suggest any other approaches for non-blocking client
body upload?

Thanks.

location /upload {
    client_body_in_file_only on;
    client_max_body_size     10g;

    proxy_pass_request_body off;
    proxy_redirect          off;

    proxy_set_header        Content-Length 0;
    proxy_http_version      1.1;
    proxy_pass              http://upstream$request_uri;
}

Posted at Nginx Forum: https://forum.nginx.org/read.php?2,279958,279958#msg-279958



More information about the nginx mailing list