东莞建材网站建设,南岗哈尔滨网站建设,网站做装修,百度app关键词优化概述对于一些有并发要求的业务#xff0c;特别是对接外部流量时#xff0c;产品上线前一定要做的就是压力测试#xff0c;但是常规的压力测试并不能覆盖所有情况。以gemeter、ab,、webbench、http_load为例#xff0c;这些通过模拟请求的压测工具#xff0c;只能发送特定的…概述对于一些有并发要求的业务特别是对接外部流量时产品上线前一定要做的就是压力测试但是常规的压力测试并不能覆盖所有情况。以gemeter、ab,、webbench、http_load为例这些通过模拟请求的压测工具只能发送特定的参数对于一些参数异常导致的程序处理异常是无法考虑到的所以就需要一款能复制真实流量并且不影响线上业务的工具。流量复制工具有很多例如Gor、tcpreplay、tcpcopy等这些工具贴合真实场景能模拟真实流量并支持流量的放大或缩小更容易测试出程序的瓶颈和潜在问题。几款流量复制工具gor: https://github.com/buger/goreplaytcpreplay: https://github.com/appneta/tcpreplaytcpcopy: https://github.com/session-replay-tools/tcpcopyNginx模块ngx_http_mirror_module在Nginx 1.13.4中开始引入下面重点介绍nginx模块ngx_http_mirror_module和gor。流量复制--Nginx模块ngx_http_mirror_module参考配置配置如下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; #charset koi8-r; #access_log logs/host.access.log main; location / { mirror /mirror; proxy_pass http://backend; } location /mirror { internal; proxy_pass http://test_backend$request_uri; }}流量放大配置两个mirror即可location / { mirror /mirror; mirror /mirror; proxy_pass http://backend; }使用是很方便但是线上nginx一般都承载了不止一个业务修改nginx配置后需要nginx -s reload来使之生效这种操作在线上还是尽量需要避免的。流量复制--gorGor 是用 Golang 写的一个 HTTP 实时流量复制工具。功能更强大支持流量的放大、缩小频率限制还支持把请求记录到文件方便回放和分析也支持和 ElasticSearch 集成将流量存入 ES 进行实时分析。1、下载安装只需要下载安装也可以下载编译好的二进制文件直接使用#wget https://github.com/buger/goreplay/releases/download/v0.16.1/gor_0.16.1_x64.tar.gz#tar xzvf gor_0.16.1_x64.tar.gz2、流量复制gor也可以将流量复制到文件然后再对他们进行回放。回放的时候流量会维持原始的时间间隔。如果使用了百分比来进行速率限制那么回放的速率会相应的增加或减少。有了这种速率限制gor就可以用来进行压力测试。#write to filegor --input-raw :80 --output-file requests_origin.gor#read from filegor --input-file requests_origin.gor --output-http http://localhost:80813、流量回放目前这种方式只支持input-file