Can multiple nginx instances share a single proxy cache store?

Maxim Dounin mdounin at mdounin.ru
Tue Jul 31 13:58:28 UTC 2012


Hello!

On Tue, Jul 31, 2012 at 03:35:25PM +0200, Isaac Hailperin wrote:

> 
> Hi,
> 
> I am planning to deploy multiple nginx servers (10) to proxy a bunch
> of apaches(20). The apaches host about 4000 vhosts, with a total
> volume of about 1TB.
> One scenario I am thinking of with regard to hard disk storage of
> the proxy cache would be to have a single storage object, eg. NAS,
> connected to all 10 nginx servers via fibre channel.
> 
> This would have the advantage of only pulling items into cache once,
> and would also avoid cache inconsistencies, which could at least be
> a temporal problem if all 10 nginx servers would have their own
> cache.
> 
> My question now is: would this work in theory?
> Can multiple nginx instances share a single proxy cache store?

No.

> I am thinking of cache management, all 10 nginx instances would try
> to manage the same cache directory. I don't know enough about the
> cache management to understand if there are problems with this
> scenario.
> 
> Strictly speaking this is a second question, but still: the
> alternative would be to give the nginx local storage for the proxy
> cache (e.g. a raid 5, or even jbod (just a bunch of disks)). This
> would obviously be much simpler to set up and manage, und thus be
> more robust (the single storage would be a single point of failure).
> Which would you recommend?

Use local storage.

The main disadvantage of a network storage pretending to be a 
local filesystem is blocking I/O.  Even with fully working AIO (in 
contrast to one available under Linux, which requires directio)
there are still blocking operations like open()/fstat(), and this 
will likely result in suboptimal nginx performance even if just 
serving static files from such storage.

Maxim Dounin



More information about the nginx mailing list