浏览 2.5k
使用 ngx_http_mirror_module 进行流量复制的时候遇到一个问题,请教各位大佬
准备在不影响生产环境的情况下将生产入口流量复制一份到测试环境,做测试验证工作;
当测试环境的服务器响应缓慢或者停掉的时候,会阻塞生产的请求响应,这个是绝对不能接受的。
如下图所示,安装nginx后只添加了 mirror 复制配置,其他均未作调整
listen 80;
server_name 192.168.132.8;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
mirror /mirror;
proxy_pass http://192.168.132.8:8080;
}
location = /mirror {
internal;
proxy_pass http://192.168.132.1:8090/$request_uri;
proxy_set_header X-Original-URI $request_uri;
}
场景 | TPS |
---|---|
直连 master | 4532 |
通过 nginx 访问 master | 2567 |
通过 nginx 访问 master 并复制流量到 mirror | 675 |
通过 nginx 访问 master 并复制流量到 mirror (mirror throw exception) | 883 |
通过 nginx 访问 master 并复制流量到 mirror (mirror sleep 10s 后返回) | 9.7 |
通过 nginx 访问 master 并复制流量到 mirror (mirror 停机) | 阻塞 |
按点赞数排序
按时间排序
没办法完全不受影响的,因为mirror是子请求,当子请求未结束时,主请求消耗的内存至少是无法释放的。你可以尝试在/mirror里,把超时时间大幅度调低,包括connect/read/send,再压下看看。
2
回答于2020-09-17 14:15
sticky模块只能在linux下吧,win下没有。tomcat好像有个session复制吧,或者可以用共享session。
1.19.1应该是支持ipv6的。需要编译的时候添加--with-ipv6 声明对ipv6的支持。具体可以参考下面的文章。
https://blog.csdn.net/shenxianfeng/article/details/72859830