tcp工具怎么用 安卓tcp客户端工具使用方法

一、什么是流量复制?

tcp工具怎么用 安卓tcp客户端工具使用方法

文章插图
我们把用户访问系统造成的数据传输定义为流量 , 那么在用户访问系统的过程中 , 我们可以把进入和流出的数据复制下来 , 进行保存 , 待后续使用 , 即离线模式 , 或者转发到一个新的服务器 , 立即使用 , 即在线模式 。
二、流量复制的应用
性能测试中我们可以使用诸如 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 {listen80;server_namelocalhost;
# original 配置location / {# mirror指定镜像uri为 /mirrormirror /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 来使之生效 , 这种操作在线上还是尽量需要避免的 。