Extremely slow file (~5MB) upload via POST
    Francis Daly 
    francis at daoine.org
       
    Mon Nov 11 12:11:56 UTC 2019
    
    
  
On Sun, Nov 10, 2019 at 01:03:20PM -0500, frank.muller wrote:
Hi there,
I don't have an answer for you, but there are some things you could
perhaps try, if you are happy to keep investigating.
> [DESCRIPTION] I've an upstream backend service behind Niginx (1.16.1,
> openssl-1.1.1) which allow people upload files from their browser. The files
> are simply stored on disk. Nothing else is performed on them.
The sequence is: client writes to nginx; nginx writes to upstream.
Can you see: is the extra slowness in the first part, or the second?
The usual first place to look is in the log files.
> error_log  off; #/var/log/nginx/error.log  info;
You can probably look in the file /usr/local/nginx/off to see what nginx
says is happening; but you might want to increase the log level to see
more details.
>       access_log    off; #/var/log/nginx/access.log;
You don't have an access log to look in. That probably does not matter
much here.
>       sendfile      on;
>       tcp_nopush    on;
>       tcp_nodelay   on;
> 
>       types_hash_max_size 2048;
> 
>       open_file_cache          max=10000 inactive=10m;
>       open_file_cache_valid    1h;
>       open_file_cache_min_uses 1;
>       open_file_cache_errors   on;
I think that those directives should not affect this test, either way.
>         listen  443 ssl;
>         location / {
>            proxy_pass http://127.0.0.1:7777;
>         }
> [PROBLEM] A 5MB file takes almost 30 seconds to upload via Nginx.
> When uploading it directly to the upstream backend, it takes ~400 millisec
> at max.
That does sound unnecessarily slow. The (presumed) ssl/no-ssl difference
should not account for that much overhead.
> Running strace, we've got this:
> % time     seconds  usecs/call     calls    errors syscall
> ------ ----------- ----------- --------- --------- ----------------
>  47.96    0.041738          11      3887      1489 read
>  21.73    0.018909          13      1509           epoll_wait
>  17.95    0.015622          22       708           writev
>  10.62    0.009241          13       712           write
>   0.47    0.000407          19        21        21 connect
I don't know the details, but what is nginx trying to connect() to that
is erroring every time? Is that likely relevant to the problem?
> A lot of errors in "read" calls: 1489 errors. They all correspond to (thanks
> again to strace):
It is possible that the nginx debug log might have more nginx-related
details than the bare strace.
Good luck with it,
	f
-- 
Francis Daly        francis at daoine.org
    
    
More information about the nginx
mailing list