Windows Nginx Network Sharing (Mapped Hard Drive) Issue

Maxim Dounin mdounin at mdounin.ru
Mon Jan 18 14:14:46 UTC 2016


Hello!

On Mon, Jan 18, 2016 at 08:54:42AM -0500, c0nw0nk wrote:

> So i have two machines in different locations.
> 
> Web server is C:/
> 
> Storage Server is Z:/ (This one is the external mapped hard drive)
> 
> Now when you upload files to nginx especialy large files in my tests 2GB.
> Nginx then pushes the file from the temp location to the Z drive, The issue
> with this is it locks up and stops serving traffic until it finishes pushing
> the file onto the storage server. So if i was to try and get Nginx to
> respond to any connection or request it will sit in the connecting state
> until the file has been pushed onto the external machine.

When nginx has to move a file from a temporary location to a 
permanent one, this operation will be costly when moving between 
filesystems.  Moreover, during this operation nginx worker will be 
blocked and won't be able to process any other events.

At least two places in the documentation explicitly warn about 
such setups, dav_methods and proxy_cache_path.  E.g., the 
dav_methods directive description say 
(http://nginx.org/r/dav_methods):

: A file uploaded with the PUT method is first written to a 
: temporary file, and then the file is renamed. Starting from 
: version 0.8.9, temporary files and the persistent store can be put 
: on different file systems. However, be aware that in this case a 
: file is copied across two file systems instead of the cheap 
: renaming operation. It is thus recommended that for any given 
: location both saved files and a directory holding temporary files, 
: set by the client_body_temp_path directive, are put on the same 
: file system.

Additionally, in your paricular setup you are using network 
filesystem to save files.  This is expected to cause even bigger 
problems than usual copy, as network filesystems usually have much 
higher latency than local disks.  Using network filesystems with 
nginx is generally not recommended.

That is, the problem you are seeing is expected with the 
configuration you have.  Reconsider the configuration you are 
using.

-- 
Maxim Dounin
http://nginx.org/



More information about the nginx mailing list