-
2022-03-15 17:32:37
- nginx 1.13.4及后续版本内置ngx_http_mirror_module模块,提供流量镜像(复制)的功能。
- 源站请求,直接原路返回;正常配置下,mirror请求不影响源站请求及响应,源站server将流量复制到mirror站后,两者不再有任何交集。镜像地址的响应不会返回到请求者,请求者仍然接收主体地址的响应
nginx.conf配置如下
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 8080; server_name localhost; location / { # 流量复制 mirror /mirror; mirror /mirror2; mirror_request_body on; # 设置主体地址 proxy_pass http://127.0.0.1:8081; } # 镜像站点1 location = /mirror { internal; # 设置镜像地址 proxy_pass http://127.0.0.1:8082$request_uri; proxy_pass_request_body on; proxy_set_header X-Original-URI $request_uri; } # 镜像站点2 location = /mirror2 { internal; # 设置镜像地址 proxy_pass http://127.0.0.1:8083$request_uri; proxy_pass_request_body on; proxy_set_header X-Original-URI $request_uri; } } }
修改主体地址和镜像地址后即可使用。
另,此nginx对外暴露地址为 localhost:8080,如果需要修改则修改http.server.listen和http.server.server_name
更多相关内容 -
http流量复制工具goreplay-附件资源
2021-03-02 15:08:53http流量复制工具goreplay-附件资源 -
性能工具之常见流量复制工具
2021-05-07 00:37:41文章目录什么是流量复制?常见的流量复制工具综述tcpcopygoreplaysandbox-repeaterSharinganRDebug总结 什么是流量复制? 总结一下,流量复制工具的优势就是可以将线上流量拷贝到测试机器,实时的模拟线上环境,真实...文章目录
一、什么是流量复制?
我们把用户访问系统造成的数据传输定义为流量,那么在用户访问系统的过程中,我们可以把进入和流出的数据复制下来,进行保存,待后续使用,即离线模式,或者转发到一个新的服务器,立即使用,即在线模式。
二、流量复制的应用
性能测试中我们可以使用诸如 ab, wrk, httperf, locust, JMeter 等工具模拟用户请求,也可以使用流「流量复制」工具,实时捕捉生产环境流量并导向目标测试系统。同时,这些「流量复制」工具可以支持对真实流量进行放大或缩小。
于是有人说,就是因为这样才应该直接用真实流量的方式来做嘛,这样就不用管业务模型了,直接就有生产的业务模型了。没错,只要你能通过生产流量扩大回放的方式实现压力部分,确实可以不用考虑业务场景了。但这么做的前提也必须是你的生产流量来源是可以覆盖想要测试的业务场景的。
这里要批驳一个观点,就是有些人觉得只有通过生产流量回放的方式,才是真实地 模拟了线上的流量。事实上,这个观点是偏颇的。
总结一下,流量复制工具的优势就是可以将线上流量拷贝到测试机器,实时的模拟线上环境,真实的模拟线上流量的变化规律,达到在程序不上线的情况下实时承担线上流量的效果。
三、常见的流量复制工具
1、综述
流量复制工具一般分成这几类:
- 基于web 服务器的请求复制
- 优点:请求多样化、成本
- 缺点:不具备通用性、丢失网络延迟、占用在线资源比较严重
- 基于应用层的流量复制工具
- 优点:实现简单
- 缺点:但会挤占线上应用的资源(比如连接资源,内存资源等),还可能会因为耦合度高而影响正常业务。
- 基于网络栈的流量复制工具,直接从链路层抓取数据包
- 优点:应用影响较小
- 缺点:但是其实现也就相对复杂一些
2、ngx_http_mirror_module
- 在 Nginx 1.13.4 中引入的插件
- 它是一种应用层的流量复制工具
该模块目前只实现了两个配置指令,用法相当简单:
location / { mirror /mirror; proxy_pass } location /mirror { internal; proxy_pass http://test_backend$request_uri; }
每一条 mirror 配置项对应用户请求的一个副本,我们就可以通过配置多次 mirror 指令来实现 “流量 放大” 的效果。当然,你也可以将多个副本转发给不同的后端目标系统。
示例配置:
server { listen 8080; access_log /home/work/log/nginx/org.log; root html/org; } server { listen 8081; access_log /home/work/log/nginx/mir.log ; root html/mir; } upstream backend { server 127.0.0.1:8080; } upstream test_backend { server 127.0.0.1:8081; } server { listen 80; server_name localhost; # original 配置 location / { # mirror指定镜像uri为 /mirror mirror /mirror; # off|on 指定是否镜像请求body部分(开启为on,则请求自动缓存;) mirror_request_body off; # 指定上游server的地址 proxy_pass http://backend; } # mirror 配置 location /mirror { # 指定此location只能被“内部的”请求调用 internal; # 指定上游server的地址 proxy_pass http://test_backend$request_uri; # 设置镜像流量的头部 proxy_set_header X-Original-URI $request_uri; } }
流量放大, 配置两个 mirror 即可:
location / { mirror /mirror; mirror /mirror; proxy_pass http://backend; }
使用很方便,但是线上 nginx 一般都承载了不止一个业务,修改 nginx 配置后需要
nginx -s reload
来使之生效,这种操作在线上还是尽量需要避免的。3、TCPCopy
-
TCPCopy 是一种请求复制(复制基于 TCP 的 packets)工具 ,通过复制在线数据包,修改 TCP/IP 头部信息,发送给测试服务器,达到欺骗测试服务器的TCP 程序的目的,从而为欺骗上层应用打下坚实基础。
-
TCPCopy 由网易技术部的王斌在王波的工作基础上中 2010 年开发,并于 2011 年 9 月开源。T
-
TCPCopy 一般会与 TCPDump 共同使用。
-
基于 C 语言
-
stars:3.9k
TCPCopy 由两部分组成:TCPCopy 和 intercept。TCPCopy 在线上服务器上运行并捕获在线请求,intercept 运行在辅助服务器上并执行一些辅助工作,例如将响应信息传递给 TCPCopy。测试应用程序则在目标服务器上运行。也就是使用上其实还需要一个辅助服务器。TCPCopy 的主要优势:
- 协议无感知,可以透明转发,能够支持基于 TCP 的任意应用层协议,如 MySQL,Kafka,Redis 等
- 实时转发,延时较低
- 可以保留原始请求 IP 端口信息,测试服务器可用于统计
同时,也具有以下不足:
- 无法动态添加多个下游服务器
- 由于透明转发,不做协议解析,无法发现数据异常,如部分 TCP 包丢失,测试服务器将收到不完整的数据;此外,也无法对应用层数据进行筛选和修改进行修改
- 核心组件设计时未进行多线程设计,处理能力存在瓶颈
- 需要修改 iptables 来丢弃下游服务的回包,用在生产或公共的测试环境存在较大风险
4、GOReplay
-
Goreplay 是用 Golang 写的一个 HTTP 实时流量复制工具。功能更强大,支持流量的放大、缩小,频率限制,还支持把请求记录到文件,方便回放和分析,也支持和 ElasticSearch 集成,将流量存入 ES 进行实时分析。
-
GoReplay 不是代理,而是监听网络接口上的流量,不需要更改生产基础架构,而是在与服务相同的计算机上运行 GoReplay 守护程序。
-
特点:简单易用
-
stars:14.1k
与 TCPCopy 相比它的架构更简单,只有一个 gor 组件,如下:
只需要在生产服务器上启动一个 gor 进程,它负责所有的工作包括监听、过滤和转发。
它的设计遵循 Unix 设计哲学:一切都是由管道组成的,各种输入将数据复用为输出。敲下命令,即可进行流量复制。无需理解复杂的概念。同样支持在线直接转发。存储到文件进行重放,N 倍重放。
sudo ./gor --input-raw :8000 --output-http="http://localhost:8001" sudo ./gor --input-raw :8000 --output-file=requests.gor
相比 tcpcopy 只能复制 HTTP 和 HTTPS 的流量。 使用时编译很麻烦,一般直接使用编译好的版本。
一般配合 diffy 一起使用,diffy 提供 diff 能力,可以智能降噪音。
- diffy 地址:https://github.com/twitter-archive/diffy
5、TCPReplay
-
TCPReplay 是一种 pcap 包的重放工具,它可以将用 ethreal、wireshark工具抓下来的包原样或经过任意修改后重放回去。它允许你对报文做任意的修改(主要是指对2层、3层、4层报文头),指定重放报文的速度等,这样tcpreplay 就可以用来复现抓包的情景以定位 bug,以极快的速度重放从而实现压力测试。
-
stars:765
6、JVM-Sandbox
-
JVM 沙箱容器,一种 JVM 的非侵入式运行期 AOP 解决方案
-
需要代码的编写,可适用于一些比较定制化的场景
-
阿里巴巴开源
-
stars:4.3k
整体架构图:
沙箱有两种启动方式:
-
使用jvm的attach机制,线上随时可进行attach
-
java agent启动,需要在命令行增加参数,故需要重启。
流量复制的场景下基本就是选择 attach了。提供的脚本非常简单易用,直接在安装目录下敲入命令即可。
# 假设目标JVM进程号为'2343' ./sandbox.sh -p 2343
其他的就是编写 AOP相关代码然后编译成 jar 包放入到安装目录。官网的例子非常详细,有兴趣可以了解了解。
7、Sharingan
- Sharingan(中文名:写轮眼)是一个基于 golang 的流量录制回放工具,录制线上真实请求流量进行回放测试,适合项目重构、回归测试等。
- 滴滴开源
- 地址:https://github.com/didi/sharingan
- stars:656
整体架构图:
- recorder: 流量录制模块,录制流量本地文件存储、发送流量到录制agent等。
- recorder-agent:流量录制agent,单独进程启动,控制录制比例、流量存储等。
- replayer: 流量回放模块,重定向连接到Mock Server、Mock时间、添加流量标识等。
- replayer-agent:流量回放agent,单独进程启动,查询流量、查询/上报噪音、流量diff、批量回放、生成覆盖率报告等。
8、RDebug
- 支持 PHP,暂不支持 java
- 滴滴开源
- 地址:https://github.com/didi/rdebug/blob/master/README_zh_CN.md
- stars:1.1k
整体架构图:
四、总结
- 复制请求:通过将一台机器的请求复制多份发送到指定的压测机器
- 适用场景:系统调用量比较小的场景
- 优点:为了使得压测的请求跟真实的业务请求更加接近,在压测请求的来源方式上,我们尝试从真实的业务流量进行录制和回放,采用请求复制的方式来进行压力测试
- 缺点:同样也面临着处理写请求脏数据的问题,另外一个缺点复制的请求必须要将响应拦截下来,所以被压测的这台机器需要单独提供,且不能提供正常的服务(不能把响应给到真实的用户了,比如涉及到发短信邮件之类的)
参考资料:
- [1]:《性能测试实战30讲》
- [2]:Nginx 的实时流量复制模块
- [3]: Linux流量复制工具
- [4]:流量拷贝工具,你用过那几个?
- [5]:流量复制工具
- [6]:字节跳动自研线上引流回放系统的架构演进
- [7]:流量复制方案对比:Tcpcopy vs Goreplay
- [8]: 怎么真实模拟生产环境?什么是流量复制?用什么工具?
相关系列:
- 性能工具之常见流量复制工具
- 流量回放工具之 goreplay 安装及初级使用
- 流量回放工具之 goreplay 核心源码分析(VIP)
- 流量回放工具之 GoReplay output-http-stats(HTTP请求统计) 源码分析
- 流量回放工具之GoReplay output-http 源码分析
- 基于web 服务器的请求复制
-
流量复制/流量重定向
2021-10-26 21:36:05需求:将本地机房的流量引到云机房(在一个地区出现问题,一个业务可能会失去那片地区的所有客户并需要手动将流量重定向到另一个区域,可以采用那些技术实现) 第一:首先想到的是请求转移或者流量劫持 第二:改配置...需求:将本地机房的流量引到云机房(在一个地区出现问题,一个业务可能会失去那片地区的所有客户并需要手动将流量重定向到另一个区域,可以采用那些技术实现)
第一:首先想到的是请求转移或者流量劫持
第二:改配置nginx或者F5或者WAF,一部分转移到云机房IP或者域名上
第三:iptables:流量劫持是通过 iptables 转发实现的
第四:graftcp 一个可以把指定程序的 TCP 连接重定向到 SOCKS5 proxy 的工具
第五:使用 Portbender 重定向 TCP 端口流量
第六:frsocks+protoplex+流量重定向实现端口复用
-
运维必备:goreplay流量复制工具
2020-04-16 09:00:00介绍Gor 是用 Golang 写的一个 HTTP 实时流量复制工具。只需要在 LB 或者 Varnish 入口服务器上执行一个进程,就可以把生产环境的流量复制到任何地方,比如 Stag...介绍
Gor 是用 Golang 写的一个 HTTP 实时流量复制工具。只需要在 LB 或者 Varnish 入口服务器上执行一个进程,就可以把生产环境的流量复制到任何地方,比如 Staging 环境、Dev 环境。完美解决了 HTTP 层实时流量复制和压力测试的问题。
Gor工作流程
主要功能
Gor 支持流量的放大和缩小、频率限制,这样不需要搭建和生产环境一致的服务器集群也可以正确测试。
Gor 还支持根据正则表达式过滤流量,这意味着可以单独测试某个 API 服务。
Gor还可以修改 HTTP 请求头,比如替换 User-Agent, 或者增加某些 HTTP Header 。
Gor 还可以把请求记录到文件,以备回放和分析。Gor 支持和 ElasticSearch 集成,将流量存入 ES 进行实时分析。
开源地址
Github: https://github.com/buger/goreplay
部署安装
(一)常用安装方式 1.官网下载安装 wget https://github.com/buger/gor/releases/download/v0.12.1/gor_0.12.1_x64.tar.gz tar xzvf gor_0.12.1_x64.tar.gz cp gor /usr/local/bin (二)安装参考文档 1.https://www.jianshu.com/p/57e058ad4995 2.nohup gor --input-raw :9003 --output-file 9003.log --http-allow-method POST --http-allow-url /insurance/auisAbe/auibInsuranceCallback --output-http http://10.7.132.xx:9003 &
使用操作
性能测试
可以将流量复制到文件,然后再对他们进行回放。回放的时候,流量会维持原始的时间间隔。如果你使用了百分比来进行速率限制,那么回放的速率会相应的增加或减少。有了这种速率限制,gor就可以用来进行压力测试。
流量回放
目前,这种方式只支持"input-file",而且只能用百分比去控制回放速率。请注意,这个回放的速率比例是相对于input的。即按照录下来的流量的时间戳去进行回放。Gor常用命令
简单的HTTP流量复制$ gor --input-raw :80 --output-http "http://staging.com" HTTP流量复制频率控制(获取每秒超过10个请求) $ gor --input-tcp :28020 --output-http "http://staging.com|10" HTTP流量复制缩小 $ gor --input-raw :80 --output-tcp "replay.local:28020|10%" HTTP流量记录到本地文件 $ gor --input-raw :80 --output-file requests.gor HTTP流量回放和压测 $ gor --input-file "requests.gor|200%" --output-http "staging.com" HTTP流量过滤复制 $ gor --input-raw :8080 --output-http staging.com --output-http-url-regexp ^www. 自定义一些流量复制的参数 $ gor --input-raw :80 --output-http 192.168.2.6:8000 --http-allow-method POST --http-set-header 'User-Agent: Gor' -output-http-workers=1 -http-allow-url test.php 将流量复制两份到不同的测试服务 $ gor --input-tcp :28020 --output-http "http://staging.com" --output-http "http://dev.com" 将流量像负载均衡一样分配到不同的服务器 $ gor --input-tcp :28020 --output-http "http://staging.com" --output-http "http://dev.com" --split-output true
Gor配置参数
$ gor --help -cpuprofile string write cpu profile to file -debug verbose 打开debug模式,显示所有接口的流量 -http-allow-header value 用一个正则表达式来匹配http头部,如果请求的头部没有匹配上,则被拒绝 gor --input-raw :8080 --output-http staging.com --http-allow-header api-version:^v1 (default []) -http-allow-method value 类似于一个白名单机制来允许通过的http请求方法,除此之外的方法都被拒绝. gor --input-raw :8080 --output-http staging.com --http-allow-method GET --http-allow-method OPTIONS (default []) -http-allow-url value 一个正则表达式用来匹配url, 用来过滤完全匹配的的url,在此之外的都被过滤掉 gor --input-raw :8080 --output-http staging.com --http-allow-url ^www. (default []) -http-disallow-header value 用一个正则表达式来匹配http头部,匹配到的请求会被拒绝掉 gor --input-raw :8080 --output-http staging.com --http-disallow-header "User-Agent: Replayed by Gor" (default []) -http-disallow-url value 用一个正则表达式来匹配url,如果请求匹配上了,则会被拒绝 gor --input-raw :8080 --output-http staging.com --http-disallow-url ^www. (default []) -http-header-limiter value 读取请求,基于FNV32-1A散列来拒绝一定比例的特殊请求 gor --input-raw :8080 --output-http staging.com --http-header-imiter user-id:25% (default []) -http-original-host 在--output-http的输出中,通常gor会使用取代请求的http头,所以应该禁用该选项,保留原始的主机头 -http-param-limiter value Takes a fraction of requests, consistently taking or rejecting a request based on the FNV32-1A hash of a specific GET param: gor --input-raw :8080 --output-http staging.com --http-param-limiter user_id:25% (default []) -http-rewrite-url value Rewrite the request url based on a mapping: gor --input-raw :8080 --output-http staging.com --http-rewrite-url /v1/user/([^\/]+)/ping:/v2/user/$1/ping (default []) -http-set-header value Inject additional headers to http reqest: gor --input-raw :8080 --output-http staging.com --http-set-header 'User-Agent: Gor' (default []) -http-set-param value Set request url param, if param already exists it will be overwritten: gor --input-raw :8080 --output-http staging.com --http-set-param api_key=1 (default []) -input-dummy value Used for testing outputs. Emits 'Get /' request every 1s (default []) -input-file value 从一个文件中读取请求 gor --input-file ./requests.gor --output-http staging.com (default []) -input-http value 从一个http接口读取请求 # Listen for http on 9000 gor --input-http :9000 --output-http staging.com (default []) -input-raw value Capture traffic from given port (use RAW sockets and require *sudo* access): # Capture traffic from 8080 port gor --input-raw :8080 --output-http staging.com (default []) -input-tcp value 用来在多个gor之间流转流量 # Receive requests from other Gor instances on 28020 port, and redirect output to staging gor --input-tcp :28020 --output-http staging.com (default []) -memprofile string write memory profile to this file -middleware string Used for modifying traffic using external command -output-dummy value 用来测试输入,打印出接收的数据. (default []) -output-file value 把进入的请求写入一个文件中 gor --input-raw :80 --output-file ./requests.gor (default []) -output-http value 转发进入的请求到一个http地址上 # Redirect all incoming requests to staging.com address gor --input-raw :80 --output-http http://staging.com (default []) -output-http-elasticsearch string 把请求和响应状态发送到ElasticSearch: gor --input-raw :8080 --output-http staging.com --output-http-elasticsearch 'es_host:api_port/index_name' -output-http-redirects int 设置多少次重定向被允许 -output-http-stats 每5秒钟输出一次输出队列的状态 -output-http-timeout duration 指定http的request/response超时时间,默认是5秒 -output-http-workers int gor默认是动态的扩展工作者数量,你也可以指定固定数量的工作者 -output-tcp value 用来在多个gor之间流转流量 # Listen for requests on 80 port and forward them to other Gor instance on 28020 port gor --input-raw :80 --output-tcp replay.local:28020 (default []) -output-tcp-stats 每5秒钟报告一次tcp输出队列的状态 -split-output true By default each output gets same traffic. If set to true it splits traffic equally among all outputs. -stats 打开输出队列的状态 -verbose Turn on more verbose output
Elasticsearch大咖说 | 携程:从日志分析平台到综合性管理平台
-
流量复制与回放与压测平台化
2019-11-19 17:51:46TCPCOPY是比较常用,极其优秀的流量复制回放工具,但是其对组网的要求较高,对于网络不熟悉的同学入门比较难,而且扩展起来也有些难度,为了便于测试人员方便使用,最好是能够通过页面进行简单的设置后就可以达到... -
TAP流量复制器在网络流量采集中的应用
2020-04-01 22:51:43TAP流量复制器在网络流量采集中的应用,可以旁路(SPAN)或者在线(INLINE)式部署,从原始链路复制多份数据以支持多个业务系统。以及在线式部署比交换机镜像(SPAN)方式的好处 -
Nginx http_mirror_module 实现流量复制
2020-04-29 21:08:55mirror模块可以帮助我们创建一份镜像流量,比如在生产环境下处理一些请求,这些请求可能要同步的copy一份到我的测试环境当中或者开发环境当中做处理,mirror模块就可以实现。 每当我们的请求到了nginx之后,可以... -
流量复制-----tcpcopy的使用(1)
2020-05-20 14:10:09TCPCopy是基于网络栈,TCP协议的流量复制,常用的场景是把线上流量复制到测试环境,模拟线上用户操作,让测试机和真实的用户交互,让测试环境在正式灰度前暴露问题,用来排查线下不容易重现的问题,或者对测试环境做... -
流量复制导流工具研究
2019-01-03 17:12:33系统重构或重要变更上线前,可以复制线上真实流量,实时模拟线上流量,甚至可以放大真实流量,进行压力测试,以评估系统承载能力。反过来也可以这样,如果线上跑着发现有性能瓶颈,但线下环境难以复现,还不如把真实... -
TCPCopy 线上流量复制工具
2016-11-04 20:28:32为了能够更真实的测试,我们开发了一款线上流量复制工具-TCPCopy,它可以使用线上真实的流量来对测试环境中的服务器进行测试。目前,TcpCopy技术已经在中国很多公司大量使用。 二、使用场景: 1)分布式压力... -
nginx流量复制将请求同时发送到正式和测试环境
2020-06-18 18:15:49Nginx流量复制 oneinstack nginx 升级 nginx官网文档 业务需求 第三方的回调通知需要发送到生产及测试环境 解决方法 nginx流量复制 消息队列,一台服务器接收后放入消息队列,需要的服务器订阅消费 考虑到现有项目... -
Linux流量复制工具
2019-04-02 15:45:44对于一些有并发要求的业务,特别是对接外部流量时,产品上线前一定要做的就是压力测试,但是常规的压力测试并不能覆盖所有情况。以gemeter、ab,、webbench、... 流量复制工具有很多,例如Gor、tcpreplay、tc... -
k8s nginx-ingress 流量复制
2022-04-17 11:50:40配置ingress apiVersion: extensions/v1beta1 kind: Ingress metadata: annotations: field.cattle.io/creatorId: user-jg5xj field.cattle.io/ingressState: '{"YWFhLXB0bWluZC1jb20vZGVmYXVsdC9hYWEucHRtaW5... -
Gor 简单易用的流量回放及复制工具-附件资源
2021-03-02 15:05:43Gor 简单易用的流量回放及复制工具-附件资源 -
http流量复制工具goreplay
2018-02-24 14:40:41场景 一个待测服务,用来处理线上千万量级用户的各式请求; 问题 如果数据交换使用比较简单的xml、json等,可以设计各类case,去覆盖正常、异常的情况,但是如果数据交换格式比较复杂,且服务逻辑也...流量重放工具.pdf -
Tcpcopy复制流量-实战
2019-03-29 21:36:39-c 伪装地址,在把流量复制到测试服务器的时候,修改数据包的源地址为192.168.100.100,这样方便指定路由。也可以写成192.168.100.x,这样源地址就是指定网段中的地址了。 -n 流量放大倍数,如果不是压测目的就... -
GoReplay——流量复制、重放和负载测试
2020-05-18 08:23:131、功能开发完成之后,我们怎样在上线前复制线上的流量来进行测试(检验功能正确性)? 2、怎样对我们的服务进行压力测试(检验负载能力)? 针对上面两个问题,下面将向大家介绍一款非常简单好用的开源网络工具:... -
利用nginx内置ngx_http_mirror_module模块实现流量复制及流量放大
2018-11-08 21:55:00正常配置下,mirror请求不影响源站请求及响应,源站nginx-server将流量复制到mirror站后,两者不再有任何交集。 2. 安装及配置 正常安装nginx 1.13.4及后续版本。下面配置在1.14.1中验证通过。 2.1 复制get及... -
NetTAP网络分路器(亦称"流量复制汇聚器)
2011-01-11 00:29:471 NetTAP流量复制/汇聚器概述 随着网络安全技术的发展和企业安全性不断得到重视,基于网络旁路部署的安全设备及网络流量分析设备逐渐增多,在同时部署两个或以上的旁路监听设备之时不仅增加核心交换机的性能开销,... -
NGINX流量拷贝方式进行并发测试.conf
2021-04-19 14:48:02有时需要进行并发测试,需要排除本地机器等环境问题,可以使用web服务器NGINX的流量拷贝方式把请求进行翻倍,从而达到并发目的 -
HTTP流量拷贝测试神器GoReplay
2021-11-20 10:40:58这是因为线上的流量数据比测试的数据更加多样性,并且随着用户数量的增加,线上流量的也越来越大,更多的隐藏问题也会明显暴露,比如并发处理不当导致的Crash也随之出现。 那么我们有什么方法能够在上线之前完成这些... -
通过流量复制解决某个服务节点无响应的问题
2016-07-19 22:19:41说明:这里仅说明单台服务器的情况.Docker Container 分别映射到不同的端口....4.如果此时,我们做一份流量的复制,并且加上超时时间.则当请求发送到10100,超时或404后,再将复制的流量发送到10101端口即可. -
流量回放上的调研
2020-10-15 16:59:39发现这些方案均只是服务端入口流量的 Copy 组件,虽然的确能将线上流量「复制 & 引流」至目标服务,如果仅仅是复制 HTTP 入口的流量,那么接收流量回放的服务必须也要配套和被流量录制服务业务数据一致的缓存,... -
web流量/镜像复制工具——gor
2016-07-11 17:59:11web架构设计中围绕的最重要的问题就是流量。在网站初期没有流量的时候,需要线上真实的流量对系统做压力测试。而在网站后期流量起来之后,又需要在不影响线上服务的情况下,导入线上流量来验证所发布系统的相关性能... -
nginx镜像流量(与灰度发布不同)
2020-03-16 09:15:47将生产环境的流量拷贝到预上线环境或测试环境,这样做有很多好处,比如: 可以验证功能是否正常,以及服务的性能; 用真实有效的流量请求去验证,又不用造数据,不影响线上正常访问; 这跟灰度发布还不... -
Gor复制生产环境流量到测试环境
2018-10-12 17:44:09只需要在 LB 或者 Varnish 入口服务器上执行一个进程,就可以把生产环境的流量复制到任何地方,完美解决了 HTTP 层实时流量复制和压力测试的问题。对比在Nginx通过编写lua脚本进行流量拷贝要更加简单便捷,下载解压...