摘要:吞吐量吞吐量是指系統在單位時間內處理請求的數量。不同系統的平均響應時間隨用戶數增加而增長的速度也不大相同,這也是采用吞吐量來度量并發系統的性能的主要原因。
? redis-benchmark是官方自帶的Redis性能測試工具,用來測試Redis在當前環境下的讀寫性能。在使用Redis的時候,服務器的硬件配置、網絡狀況、測試環境都會對Redis的性能有所影響,我們需要對Redis實時測試以確定Redis的實際性能。
redis-benchmark [參數] [參數值]
參數 | 描述 | 默認值 |
---|---|---|
-h | 指定服務器主機名 | 127.0.0.1 |
-p | 指定服務器端口 | 6379 |
-s | 指定服務器 socket | |
-c | 指定并發連接數 | 50 |
-n | 指定請求數 | 10000 |
-d | 以字節的形式指定 SET/GET 值的數據大小 | 2 |
-k | 1=keep alive 0=reconnect | 1 |
-r | SET/GET/INCR 使用隨機 key, SADD 使用隨機值 | |
-P | 通過管道傳輸 請求 | 1 |
-q | 強制退出 redis。僅顯示 query/sec 值 | |
–csv | 以 CSV 格式輸出 | |
-l | 生成循環,永久執行測試 | |
-t | 僅運行以逗號分隔的測試命令列表。 | |
-I | Idle 模式。僅打開 N 個 idle 連接并等待。 |
? 測試系統是CentOS7.X版本的,需要確保c++環境已經安裝,執行【gcc -v】查看系統是否有gcc環境,如果沒有使用yum安裝,windows版本可以跳過這步。
yum install gcc-c++
redis下載地址:https://pan.baidu.com/s/13kHH-zU7vmh0YobyxhEmow,提取碼:dmnx,下載后上傳到服務器目錄中。
# 解壓tar -zxf redis-4.0.14.tar.gz# 進入解壓目錄cd redis-4.0.14# 編譯make# 安裝redis到/usr/local/redismake install PREFIX=/usr/local/redis# 復制配置文件到剛才的安裝目錄cp redis.conf /usr/local/redis/# 進入安裝后的目錄cd /usr/local/redis# 修改配置文件vim redis.conf# Redis后臺啟動修改 daemonize 為 yes# Redis服務器可以跨網絡訪問修改 bind 為 0.0.0.0# 開啟aof持久化appendonly yes# 進入bin目錄中啟動redis,指定配置文件cd bin/./redis-server ../redis.conf
? redis啟動后進入到bin目錄中,執行以下命令進行性能測試:
# 執行測試性能命令./redis-benchmark -t set,get -n 100000
說明:因為測試的是本機的redis性能,所以沒有指定IP和端口號。
-t:表示執行以逗號分隔的命令,執行的是set操作和get操作,如果不指定具體的值,測試的結果較多
====== SET ====== 100000 requests completed in 1.31 seconds 50 parallel clients 3 bytes payload keep alive: 198.64% <= 1 milliseconds99.85% <= 2 milliseconds99.99% <= 3 milliseconds100.00% <= 3 milliseconds76335.88 requests per second====== GET ====== 100000 requests completed in 1.26 seconds 50 parallel clients 3 bytes payload keep alive: 199.27% <= 1 milliseconds100.00% <= 1 milliseconds79365.08 requests per second
? 反饋結果:
? SET部分和GET部分,只需要關注最后一句輸出即可,以GET為例,上述輸出:79365.08 requests per second,表示每秒的GET命令處理79365.08個請求,也就是QPS為7.9W個。
? 這里的數據都是理想數據,測試出來的QPS不能代表實際生產的處理能力,在實際生產中,服務器的硬件配置、網絡狀況、測試環境都會對Redis的性能有所影響。
? 在描述系統的高并發能力時,經常根據以下三個指標來決定:
? 在實際生產中,我們需要關心在應用場景中,redis能夠處理的QPS是多少。我們需要估計生產的報文大小,使用benchmark工具指定-d數據塊大小來模擬:
./redis-benchmark -t get -n 100000 -c 100 -d 2048
? 指定并發數為100,數據大小為2048字節,在實際生產中,每個業務處理的數據大小不一致,取出一個最大的數據為基數進行測試即可,在程序里將數據的字節大小打印出來,使用redis-benchmark的-d參數指定數據大小。
? 執行結果:
====== GET ====== 100000 requests completed in 1.37 seconds 100 parallel clients 2048 bytes payload keep alive: 194.15% <= 1 milliseconds98.86% <= 2 milliseconds99.80% <= 3 milliseconds99.90% <= 4 milliseconds99.92% <= 5 milliseconds99.93% <= 6 milliseconds99.96% <= 7 milliseconds100.00% <= 8 milliseconds100.00% <= 8 milliseconds73206.44 requests per second
? 使用redis客戶端登錄到redis服務中,執行info命令查看redis的信息
# 使用Redis客戶端./redis-cli# 在客戶端中執行info命令127.0.0.1:6379> info
查看結果,輸出的信息較多,查看# Memory下面的一些信息。
connected_clients:108 #redis連接數?used_memory:8367424 # Redis 分配的內存總量 used_memory_human:7.98Mused_memory_rss:11595776 # Redis 分配的內存總量(包括內存碎片) used_memory_rss_human:11.06Mused_memory_peak:8367424used_memory_peak_human:7.98M #Redis所用內存的高峰值used_memory_peak_perc:100.48%
? 需要關注used_memory_peak_human(redis已用內存)和used_memory(分配的內存總量),當used_memory_peak_human接近used_memory時就需要注意了。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/121606.html
摘要:測試腳本測試結果測試結果讀寫比例快杰快杰快杰快杰快杰 壓力測試本篇目錄物理機普通機型測試快杰主備redis產品測試物理機普通機型測試測試條件1.開啟pipeline,不同連接數.2.關閉pipeline,不同連接數3.開啟pipeline,不同Data size測試腳本模板:#!/bin/bash for clients in {1,2,4,8,16,32,64,128,256,512,80...
摘要:基于一致性哈希的分布式內存鍵值存儲。失效未經請求與數據轉移就斷開了和的連接則需要及時通知。可見編譯模式并沒有比混合模式效果好,因為即使是不熱點的代碼也要編譯,反而浪費時間,所以一般還是選擇默認的混合模式較好。 Consistent Hashing based Key-Value Memory Storage 基于一致性哈希的分布式內存鍵值存儲——CHKV。目前的定位就是作為 Cache...
閱讀 1176·2021-11-23 10:10
閱讀 1499·2021-09-30 09:47
閱讀 887·2021-09-27 14:02
閱讀 2966·2019-08-30 15:45
閱讀 3019·2019-08-30 14:11
閱讀 3609·2019-08-29 14:05
閱讀 1819·2019-08-29 13:51
閱讀 2206·2019-08-29 11:33