Performance issue of "ngx_http_mirror_module"

Peter Booth peter_booth at me.com
Fri Oct 27 14:02:21 UTC 2017


There are a few approaches to this but they depend upon what you’re trying to achieve. Are your requests POSTs or GETs? Why do you have the mirroring configured?

 If the root cause is that your mirror site cannot support the same workload as your primary site, what do you want to happen when your mirror site is overloaded? 

One approach, using nginx, is to use rate limiting and connection limiting on your mirror server. This is described on the nginx website as part of the ddos mitigation section. 
Or, if your bursts of activity are typically for the same resource then you can use caching with the proxy_cache_use_stale directive.

Another approach could be to use lua / openresty to implement a work- shedding interceptor (within nginx) that sits in front of your slow web server.  Within lua you would need code that guesses  whether or not your web server is overloaded and, if it is, it simply returns a 503 and doesn’t forward the request.



Sent from my iPhone

> On Oct 27, 2017, at 2:24 AM, 安格 <yuanm12 at 163.com> wrote:
> 
> Dear Roman,
> 
> Thanks for your valuable response.
> So ,is that means, If we optimize the parameter of the keep-alive to avoid keep-alive connection ? then we can avoid this kind of performance issue ?
> Or if the mirror subrequest is slow than original subrequest, then we can't avoid this kind of performance issue ? Thanks in advance.
> 
> --
> 
> Regards,
> Yuan Man
> Trouble is a Friend.
> 
> 
> At 2017-10-26 20:22:13, "Roman Arutyunyan" <arut at nginx.com> wrote:
> >Hi,
> >
> >On Thu, Oct 26, 2017 at 03:15:02PM +0800, 安格 wrote:
> >> Dear All,
> >> 
> >> 
> >> I have faced a issue with Nginx "ngx_http_mirror_module" mirror function. want to discuss with you about this.
> >> 
> >> 
> >> The situation is like below:
> >> While I try to copy the request form original to mirror side, if the original application can process 600 request per seconds, but the mirror environment can only process 100 requests per seconds. Normally, even the mirror environment can't process all the request in time. it's should not impact the nginx forward the request to the original environment. But we observed if the mirror environment can't process all the request, then the Nginx will fall in issue , and original environment can't feedback process result to client in time. Then from client side, it seems the Nginx is down. If you have faced same issue before ? any suggestion  ?
> >
> >A mirror request is executed in parallel with the main request and does not
> >directly affect the main request execution time.  However, if you send another
> >request on the same client connection, it will not be processed until the
> >previous request and all its subrequest (including mirror subrequests) finish.
> >So if you use keep-alive client connections and your mirror subrequests are
> >slow, you may experience some performance issues.
> >
> >-- 
> >Roman Arutyunyan
> >_______________________________________________
> >nginx mailing list
> >nginx at nginx.org
> >http://mailman.nginx.org/mailman/listinfo/nginx
> 
> 
> 【网易自营】好吃到爆!鲜香弹滑加热即食,经典13香/麻辣小龙虾仅75元3斤>>      
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20171027/ec2b7592/attachment.html>


More information about the nginx mailing list