簡體   English   中英

Redis集群基准測試

[英]Redis-cluster benchmarking

什么是基准測試redis-cluster(最近在3.0 RC中發布)的正確方法。 AFAIK,redis-benchmark實用程序僅命中群集的一個節點。

編輯:(詳細信息)我的redis實例沒有任何群集,其吞吐量約為90 k set / get操作,但是群集設置大量時間失敗。

設置1:8台核心計算機,運行3個主節點+ 3個從節點的集群(都在同一台計算機上)我也在同一台計算機上運行3個基准測試實用程序。 每個主節點上的吞吐量下降到25 k。

這使我認為我可能正在為我的計算機上的內核數量運行過多的進程。

設置2:我將設置更新為3個主設備和0個從設備。 有趣的是,這也無濟於事,每台機器的吞吐量仍為25 k

我正在運行的基准測試命令是:redis-benchmark -p 7000 -n 10000000 -t set,get

在這方面的任何幫助將不勝感激。

正如Josiah所說,您將收到2/3的錯誤。 因此,為了以適當的方式進行基准測試,請確定一個肯定在每個節點中的密鑰(只需與redis-cli連接並使用GET / SET蠻力名稱)。 然后,使用redis-benchmark(使用在節點A中發現的密鑰)作為哈希標簽,以便僅生成將散列到該節點的密鑰。 因此,您可以執行以下操作:

redis-benchmark -r 100000 -n 1000000 set 'key{your_hash_tag}:__rand_int__' __rand_int__

這樣,您將生成不同的100k隨機密鑰,其名稱將散列到要測試的節點。 在上面的示例中, your_hash_tag只是您在測試節點中發現的密鑰名稱。

首先,我不清楚您實際上是根據自己的描述對多個Redis集群主服務器進行基准測試。 您說:“我正在運行的基准測試命令是:redis-benchmark -p 7000 -n 10000000 -t set,get”。 這實際上只會對單個Redis群集主服務器進行基准測試,特別是對端口7000上的主機進行基准測試。如果要對其他服務器進行基准測試,則在多次運行redis-benchmark時(使用-p選項)必須提供不同的端口號。

現在,即使您確實運行了不同的命令來訪問群集的不同主服務器,執行的命令中大約有2/3也會導致錯誤,而不是正常的命令執行,這僅僅是因為redis-benchmark命令正在將命令發送到服務器。群集服務器,並且該群集服務器不一定擁有要操作的密鑰的分片。

但是,您真正要強調的是,似乎還沒有一個易於使用的解決方案來對Redis集群進行基准測試。 一個適當的基准將需要弄清楚哪個分片在哪里,根據服務器和分片計算要操作的密鑰,然后最終發送命令執行基准,但是如果分片在基准期間移動,也會引發錯誤。 據我所知,執行此操作的軟件尚不存在。

用我自己的答案更新此主題,以免將答案埋在評論中。 對群集進行基准測試時,必須注意分發“ redis-benchmark”實用程序。 在同一台機器上運行它們,甚至在運行Redis集群的同一台機器上運行它們,甚至是降低吞吐量的好方法。 從另一台機器上運行“ redis-benchmark”對我來說解決了吞吐量問題。 同樣,正如antirez所指出的,應該將正確的密鑰發送給每個節點,以免您處理2/3錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM