91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用 gor 復制真實流量壓測ES集群

發布時間:2020-07-18 19:21:13 來源:網絡 閱讀:2584 作者:我的二狗呢 欄目:系統運維

生產環境下, 我們一般使用?esrally來做es的基準測試。 但是畢竟和真實生產的請求場景可能有差異的。?

因此,有必要考慮使用真實流量來壓測ES集群。


常用的流量復制工具有tcpcopy之類的,這里我們介紹一個更簡單易用的工具 gor 。

github地址:?https://github.com/buger/goreplay


TIPS:

我在測試環境的 192.168.2.4 上實際測試用的命令(放大1倍流量):

#?192.168.2.4?為老es集群節點
#?192.168.2.188?為新es集群節點

wget?https://github.com/buger/goreplay/releases/download/v1.0.0/gor_1.0.0_x64.tar.gz
tar?xf?gor_1.0.0_x64.tar.gz?-C?./
./gor?--input-raw?:9200?--output-http?"http://192.168.2.188:9200|200%"


下圖是gor 輸出到stdout的內容:

使用 gor 復制真實流量壓測ES集群


下圖是我在老es集群更新文檔后,可以看到新的es集群也自動更新了文檔

使用 gor 復制真實流量壓測ES集群



更多的關于gor 流量復制的介紹,可以看下面的內容:


參考文檔:

https://testerhome.com/articles/21180

https://github.com/buger/goreplay/wiki

https://www.jianshu.com/p/57e058ad4995




1、流量實時復制引流(--input-raw 攔截端口配合--output-http輸出),例如將本機9200端口的HTTP流量實時復制到 es-dest:9200。

gor?--input-raw?:9200?--output-http?"http://es-dest:9200"


2、如果目標服務器使用的庫與線上機器一樣,且只需要引流Get方法的請求。

gor?--input-raw?:9200??--http-allow-method?GET?--output-http?"http://es-dest:9200"


3、當需要對線上服務進行整體性能壓測時,可將線上請求擴大N倍,進行引流,將請求擴大1倍,也可縮小,調整"|"后面的百分比即可。

gor?--input-raw?:9200??--http-allow-method?GET?--output-http?"http://es-dest:9200|200%"


4、只復制某個URL請求,--http-allow-url參數,-http-allow-url參數可用正則表達式(--output-http-url-regexp在gor 0.16已經過期,使用--http-allow-url代替)。

gor?--input-raw?:9200?--http-allow-method?GET?--output-http?"http://es-dest:9200"?--http-allow-url?mall.*hotword


5、多目標服務器的流量復制引流,有點類似nginx的mirror。

gor?--input-raw?:9200?--output-http?"http://es-dest:9200"?--output-http?"http://es-dest:9200"


6、將流量轉發到多個端點,默認情況下,它會將相同的流量發送到所有輸出。

gor?--input-tcp?:2920020?--output-http?"http://staging.com"??--output-http?"http://dev.com"


7、將相同的流量發送到多個站點,并且平分所有流量。

gor?--input-raw?:9200?--output-http?"http://staging.com"??--output-http?"http://dev.com"?--split-output?true


8、HTTP超時,默認情況下,http請求和響應的超時時間為5秒。你可以像這樣覆蓋它:

gor?--input-tcp?replay.local:2920020?--output-http?http://staging.com?--output-http-timeout?30s


9、基本身份驗證,如果您的開發或登臺環境受基本身份驗證保護,那么可以在重放期間注入這些憑據:

gor?--input-raw?:9200?--output-http?"http://user:pass@staging.com"


10、性能壓力測試

可以將流量復制到文件,然后再對他們進行回放。回放的時候,流量會維持原始的時間間隔。如果你使用了百分比來進行速率限制,那么回放的速率會相應的增加或減少。有了這種速率限制,gor就可以用來進行壓力測試。

gor?--input-file?"requests.gor|200%"?--output-http?"staging.com"

目前,input-file僅在使用基于百分比的限制器時才支持此功能。與默認限制器不同input-file,它不會降低請求速度,而會減慢速度或加速請求發射。


11 、錄制與回放

./gor?--input-raw?:9200?--output-file=requests.gor

執行錄制命令后,將會創建新文件并不斷向其寫入所有捕獲的請求。


12、流量回放,重播來自文件的請求。

./gor?--input-file?requests.gor?--output-http="http://localhost:92000"


您應該看到所有記錄到http://localhost:92000的請求,并且它們將以相同的順序重播,并且與錄制的時間完全相同。



gor的用法也遠不止上述提到的這些,更多的應用測試場景,還請讀者自行挖掘。






?./gor --help? 可以列出更全面的幫助信息

Gor?is?a?simple?http?traffic?replication?tool?written?in?Go.?Its?main?goal?is?to?replay?traffic?from?production?servers?to?staging?and?dev?environments.
Project?page:?https://github.com/buger/gor
Author:?<Leonid?Bugaev>?leonsbox@gmail.com
Current?Version:?1.0.0
??-copy-buffer-size?int
????Set?the?buffer?size?for?an?individual?request?(default?5M)?(default?524289200)
??-cpuprofile?string
????write?cpu?profile?to?file
??-debug?verbose
????Turn?on?debug?output,?shows?all?intercepted?traffic.?Works?only?when?with?verbose?flag
??-exit-after?duration
????exit?after?specified?duration
??-http-allow-header?value
????A?regexp?to?match?a?specific?header?against.?Requests?with?non-matching?headers?will?be?dropped:
?????gor?--input-raw?:9200?--output-http?staging.com?--http-allow-header?api-version:^v1
??-http-allow-method?value
????Whitelist?of?HTTP?methods?to?replay.?Anything?else?will?be?dropped:
????gor?--input-raw?:9200?--output-http?staging.com?--http-allow-method?GET?--http-allow-method?OPTIONS
??-http-allow-url?value
????A?regexp?to?match?requests?against.?Filter?get?matched?against?full?url?with?domain.?Anything?else?will?be?dropped:
?????gor?--input-raw?:9200?--output-http?staging.com?--http-allow-url?^www.
??-http-basic-auth-filter?value
????A?regexp?to?match?the?decoded?basic?auth?string?against.?Requests?with?non-matching?headers?will?be?dropped:
?????gor?--input-raw?:9200?--output-http?staging.com?--http-basic-auth-filter?"^customer[0-9].*"
??-http-disallow-header?value
????A?regexp?to?match?a?specific?header?against.?Requests?with?matching?headers?will?be?dropped:
?????gor?--input-raw?:9200?--output-http?staging.com?--http-disallow-header?"User-Agent:?Replayed?by?Gor"
??-http-disallow-url?value
????A?regexp?to?match?requests?against.?Filter?get?matched?against?full?url?with?domain.?Anything?else?will?be?forwarded:
?????gor?--input-raw?:9200?--output-http?staging.com?--http-disallow-url?^www.
??-http-header-limiter?value
????Takes?a?fraction?of?requests,?consistently?taking?or?rejecting?a?request?based?on?the?FNV32-1A?hash?of?a?specific?header:
?????gor?--input-raw?:9200?--output-http?staging.com?--http-header-limiter?user-id:25%
??-http-original-host
????Normally?gor?replaces?the?Host?http?header?with?the?host?supplied?with?--output-http.??This?option?disables?that?behavior,?preserving?the?original?Host?header.
??-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?:9200?--output-http?staging.com?--http-param-limiter?user_id:25%
??-http-pprof?:8181
????Enable?profiling.?Starts??http?server?on?specified?port,?exposing?special?/debug/pprof?endpoint.?Example:?:8181
??-http-rewrite-header?value
????Rewrite?the?request?header?based?on?a?mapping:
????gor?--input-raw?:9200?--output-http?staging.com?--http-rewrite-header?Host:?(.*).example.com,$1.beta.example.com
??-http-rewrite-url?value
????Rewrite?the?request?url?based?on?a?mapping:
????gor?--input-raw?:9200?--output-http?staging.com?--http-rewrite-url?/v1/user/([^\/]+)/ping:/v2/user/$1/ping
??-http-set-header?value
????Inject?additional?headers?to?http?reqest:
????gor?--input-raw?:9200?--output-http?staging.com?--http-set-header?'User-Agent:?Gor'
??-http-set-param?value
????Set?request?url?param,?if?param?already?exists?it?will?be?overwritten:
????gor?--input-raw?:9200?--output-http?staging.com?--http-set-param?api_key=1
??-input-dummy?value
????Used?for?testing?outputs.?Emits?'Get?/'?request?every?1s
??-input-file?value
????Read?requests?from?file:?
????gor?--input-file?./requests.gor?--output-http?staging.com
??-input-file-loop
????Loop?input?files,?useful?for?performance?testing.
??-input-kafka-host?string
????Send?request?and?response?stats?to?Kafka:
????gor?--output-stdout?--input-kafka-host?'192.168.0.1:9092,192.168.0.2:9092'
??-input-kafka-json-format
????If?turned?on,?it?will?assume?that?messages?coming?in?JSON?format?rather?than??GoReplay?text?format.
??-input-kafka-topic?string
????Send?request?and?response?stats?to?Kafka:
????gor?--output-stdout?--input-kafka-topic?'kafka-log'
??-input-raw?value
????Capture?traffic?from?given?port?(use?RAW?sockets?and?require?*sudo*?access):
????#?Capture?traffic?from?9200?port
????gor?--input-raw?:9200?--output-http?staging.com
??-input-raw-bpf-filter?string
????BPF?filter?to?write?custom?expressions.?Can?be?useful?in?case?of?non?standard?network?interfaces?like?tunneling?or?SPAN?port.?Example:?--input-raw-bpf-filter?'dst?port?9200'
??-input-raw-buffer-size?int
????Controls?size?of?the?OS?buffer?(in?bytes)?which?holds?packets?until?they?dispatched.?Default?value?depends?by?system:?in?Linux?around?2MB.?If?you?see?big?package?drop,?increase?this?value.
??-input-raw-engine?libpcap
????Intercept?traffic?using?libpcap?(default),?and?`raw_socket`?(default?"libpcap")
??-input-raw-expire?duration
????How?much?it?should?wait?for?the?last?TCP?packet,?till?consider?that?TCP?message?complete.?(default?2s)
??-input-raw-immediate-mode
????Set?pcap?interface?to?immediate?mode.
??-input-raw-override-snaplen
????Override?the?capture?snaplen?to?be?64k.?Required?for?some?Virtualized?environments
??-input-raw-realip-header?string
????If?not?blank,?injects?header?with?given?name?and?real?IP?value?to?the?request?payload.?Usually?this?header?should?be?named:?X-Real-IP
??-input-raw-timestamp-type?string
????Possible?values:?PCAP_TSTAMP_HOST,?PCAP_TSTAMP_HOST_LOWPREC,?PCAP_TSTAMP_HOST_HIPREC,?PCAP_TSTAMP_ADAPTER,?PCAP_TSTAMP_ADAPTER_UNSYNCED.?This?values?not?supported?on?all?systems,?GoReplay?will?tell?you?available?values?of?you?put?wrong?one.
??-input-raw-track-response
????If?turned?on?Gor?will?track?responses?in?addition?to?requests,?and?they?will?be?available?to?middleware?and?file?output.
??-input-tcp?value
????Used?for?internal?communication?between?Gor?instances.?Example:?
????#?Receive?requests?from?other?Gor?instances?on?2920020?port,?and?redirect?output?to?staging
????gor?--input-tcp?:2920020?--output-http?staging.com
??-input-tcp-certificate?string
????Path?to?PEM?encoded?certificate?file.?Used?when?TLS?turned?on.
??-input-tcp-certificate-key?string
????Path?to?PEM?encoded?certificate?key?file.?Used?when?TLS?turned?on.
??-input-tcp-secure
????Turn?on?TLS?security.?Do?not?forget?to?specify?certificate?and?key?files.
??-memprofile?string
????write?memory?profile?to?this?file
??-middleware?string
????Used?for?modifying?traffic?using?external?command
??-output-dummy?value
????DEPRECATED:?use?--output-stdout?instead
??-output-file?value
????Write?incoming?requests?to?file:?
????gor?--input-raw?:9200?--output-file?./requests.gor
??-output-file-append
????The?flushed?chunk?is?appended?to?existence?file?or?not.?
??-output-file-flush-interval?duration
????Interval?for?forcing?buffer?flush?to?the?file,?default:?1s.?(default?1s)
??-output-file-max-size-limit?value
????Max?size?of?output?file,?Default:?1TB?(default?-1)
??-output-file-queue-limit?int
????The?length?of?the?chunk?queue.?Default:?256?(default?256)
??-output-file-size-limit?value
????Size?of?each?chunk.?Default:?32mb?(default?33554432)
??-output-http?value
????Forwards?incoming?requests?to?given?http?address.
????#?Redirect?all?incoming?requests?to?staging.com?address?
????gor?--input-raw?:9200?--output-http?http://staging.com
??-output-http-compatibility-mode
????Use?standard?Go?client,?instead?of?built-in?implementation.?Can?be?slower,?but?more?compatible.
??-output-http-debug
????Enables?http?debug?output.
??-output-http-elasticsearch?string
????Send?request?and?response?stats?to?ElasticSearch:
????gor?--input-raw?:9200?--output-http?staging.com?--output-http-elasticsearch?'es_host:api_port/index_name'
??-output-http-header?--output-http-header
????WARNING:?--output-http-header?DEPRECATED,?use?`--http-set-header`?instead
??-output-http-header-filter?--output-http-header-filter
????WARNING:?--output-http-header-filter?DEPRECATED,?use?`--http-allow-header`?instead
??-output-http-header-hash-filter?output-http-header-hash-filter
????WARNING:?output-http-header-hash-filter?DEPRECATED,?use?`--http-header-hash-limiter`?instead
??-output-http-method?--output-http-method
????WARNING:?--output-http-method?DEPRECATED,?use?`--http-allow-method`?instead
??-output-http-queue-len?int
????Number?of?requests?that?can?be?queued?for?output,?if?all?workers?are?busy.?default?=?1000?(default?1000)
??-output-http-redirects?int
????Enable?how?often?redirects?should?be?followed.
??-output-http-response-buffer?int
????HTTP?response?buffer?size,?all?data?after?this?size?will?be?discarded.
??-output-http-rewrite-url?--output-http-rewrite-url
????WARNING:?--output-http-rewrite-url?DEPRECATED,?use?`--http-rewrite-url`?instead
??-output-http-stats
????Report?http?output?queue?stats?to?console?every?N?milliseconds.?See?output-http-stats-ms
??-output-http-stats-ms?int
????Report?http?output?queue?stats?to?console?every?N?milliseconds.?default:?5000?(default?5000)
??-output-http-timeout?duration
????Specify?HTTP?request/response?timeout.?By?default?5s.?Example:?--output-http-timeout?30s?(default?5s)
??-output-http-track-response
????If?turned?on,?HTTP?output?responses?will?be?set?to?all?outputs?like?stdout,?file?and?etc.
??-output-http-url-regexp?--output-http-url-regexp
????WARNING:?--output-http-url-regexp?DEPRECATED,?use?`--http-allow-url`?instead
??-output-http-workers?int
????Gor?uses?dynamic?worker?scaling.?Enter?a?number?to?set?a?maximum?number?of?workers.?default?=?0?=?unlimited.
??-output-http-workers-min?int
????Gor?uses?dynamic?worker?scaling.?Enter?a?number?to?set?a?minimum?number?of?workers.?default?=?1.
??-output-kafka-host?string
????Read?request?and?response?stats?from?Kafka:
????gor?--input-raw?:9200?--output-kafka-host?'192.168.0.1:9092,192.168.0.2:9092'
??-output-kafka-json-format
????If?turned?on,?it?will?serialize?messages?from?GoReplay?text?format?to?JSON.
??-output-kafka-topic?string
????Read?request?and?response?stats?from?Kafka:
????gor?--input-raw?:9200?--output-kafka-topic?'kafka-log'
??-output-null
????Used?for?testing?inputs.?Drops?all?requests.
??-output-stdout
????Used?for?testing?inputs.?Just?prints?to?console?data?coming?from?inputs.
??-output-tcp?value
????Used?for?internal?communication?between?Gor?instances.?Example:?
????#?Listen?for?requests?on?9200?port?and?forward?them?to?other?Gor?instance?on?2920020?port
????gor?--input-raw?:9200?--output-tcp?replay.local:2920020
??-output-tcp-secure
????Use?TLS?secure?connection.?--input-file?on?another?end?should?have?TLS?turned?on?as?well.
??-output-tcp-stats
????Report?TCP?output?queue?stats?to?console?every?5?seconds.
??-prettify-http
????If?enabled,?will?automatically?decode?requests?and?responses?with:?Content-Encodning:?gzip?and?Transfer-Encoding:?chunked.?Useful?for?debugging,?in?conjuction?with?--output-stdout
??-split-output?true
????By?default?each?output?gets?same?traffic.?If?set?to?true?it?splits?traffic?equally?among?all?outputs.
??-stats
????Turn?on?queue?stats?output
??-verbose
????Turn?on?more?verbose?output







向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

夹江县| 永春县| 法库县| 留坝县| 安吉县| 新巴尔虎右旗| 景德镇市| 沂源县| 富川| 龙陵县| 长葛市| 邹平县| 伊吾县| 灌阳县| 利辛县| 波密县| 洪泽县| 金堂县| 太谷县| 陈巴尔虎旗| 吐鲁番市| 彰武县| 宣恩县| 理塘县| 江川县| 涿鹿县| 唐山市| 黔西| 灵寿县| 朝阳区| 涞源县| 乌苏市| 乌鲁木齐县| 崇礼县| 合阳县| 郓城县| 沈阳市| 施甸县| 安远县| 龙江县| 彝良县|