測算Redis處理實際生產請求的QPS/TPS


測算Redis處理實際生產請求的QPS/TPS

Benchmark工具

redis發布版本中自帶了redis-benchmark性能測試工具;

示例:
使用50個並發連接,發出100000個請求,每個請求的數據為2kb,
測試host為127.0.0.1 端口為6379的redis服務器性能:

./redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 100000 -d 2

...

====== SADD ======
  100000 requests completed in 2.27 seconds
  500 parallel clients
  3 bytes payload
  keep alive: 1

4.66% <= 1 milliseconds
14.15% <= 2 milliseconds
23.87% <= 3 milliseconds
33.59% <= 4 milliseconds
43.13% <= 5 milliseconds
52.69% <= 6 milliseconds
62.08% <= 7 milliseconds
71.43% <= 8 milliseconds
80.66% <= 9 milliseconds
89.10% <= 10 milliseconds
95.23% <= 11 milliseconds
98.76% <= 12 milliseconds
99.59% <= 13 milliseconds
99.78% <= 14 milliseconds
99.87% <= 15 milliseconds
99.95% <= 16 milliseconds
99.99% <= 17 milliseconds
100.00% <= 17 milliseconds
44150.11 requests per second

我們關注結果最后一行:每秒44150.11個請求,既QPS4.4萬;
但這里的數據都只是測試數據,測出來的QPS不能代表實際生產的處理能力;

測算redis處理實際生產請求的QPS/TPS

在實際生產中,我們需要關心這個指標,在我們的應用場景中,
redis能夠處理的最大的(QPS/TPS)是多少?

測量redis QPS的方式有兩種:

  1. 估計生產的報文大小,使用benchmark工具指定-d數據塊大小來模擬;

  2. 使用redis-cli中info統計信息計算差值;
    redis-cli的info命令中有一項total_commands_processed表示:從啟動到現在處理的所有命令總數,可以通過統計兩次info指令間的差值來計算QPS:

//返回redis-cli info中total_commands_processed的結果 
long getCmdProcessNum(redisContext *c)
{
    string strVal;
    getInfo(c,strVal);

    map<string,string> mpVal;
    parserInfo(strVal,mpVal);

    map<string,string>::iterator  iter = mpVal.find("total_commands_processed");

    if(iter != mpVal.end())
    {
        return atol(iter->second.c_str());
    }

    cout << "[err] not found total_commands_processed" << endl;
    return 0;
}

程序實現很簡單,就不全貼在這里了,完整代碼詳見github:
https://github.com/me115/cppset/tree/master/redisTPS

在實際生產中,運行這個程序來統計實際的QPS。
運行示例:

/opt/app/redisTPS#./redisTPS 
Time:  1  Process:40962  TPS:40839.48
Time:  1  Process:43741  TPS:43610.17
Time:  1  Process:38935  TPS:38779.88
Time:  1  Process:31724  TPS:31597.61
Time:  1  Process:32169  TPS:32008.96
Time:  1  Process:31634  TPS:31476.62
Time:  1  Process:46007  TPS:45823.71
Time:  1  Process:50460  TPS:50258.96
Time:  1  Process:47309  TPS:47167.50
Time:  1  Process:50511  TPS:50359.92
...

Posted by: 大CC | 14MAR,2015
博客:blog.me115.com [訂閱]
微博:新浪微博


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM