| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <title>Pegasus | Benchmark</title> |
| <link rel="stylesheet" href="/zh/assets/css/app.css"> |
| <link rel="shortcut icon" href="/zh/assets/images/favicon.ico"> |
| <link rel="stylesheet" href="/zh/assets/css/utilities.min.css"> |
| <link rel="stylesheet" href="/zh/assets/css/docsearch.v3.css"> |
| <script src="/assets/js/jquery.min.js"></script> |
| <script src="/assets/js/all.min.js"></script> |
| <script src="/assets/js/docsearch.v3.js"></script> |
| <!-- Begin Jekyll SEO tag v2.8.0 --> |
| <title>Benchmark | Pegasus</title> |
| <meta name="generator" content="Jekyll v4.3.3" /> |
| <meta property="og:title" content="Benchmark" /> |
| <meta property="og:locale" content="en_US" /> |
| <meta name="description" content="测试工具及配置" /> |
| <meta property="og:description" content="测试工具及配置" /> |
| <meta property="og:site_name" content="Pegasus" /> |
| <meta property="og:type" content="article" /> |
| <meta property="article:published_time" content="2024-04-22T06:39:52+00:00" /> |
| <meta name="twitter:card" content="summary" /> |
| <meta property="twitter:title" content="Benchmark" /> |
| <script type="application/ld+json"> |
| {"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2024-04-22T06:39:52+00:00","datePublished":"2024-04-22T06:39:52+00:00","description":"测试工具及配置","headline":"Benchmark","mainEntityOfPage":{"@type":"WebPage","@id":"/overview/benchmark/"},"url":"/overview/benchmark/"}</script> |
| <!-- End Jekyll SEO tag --> |
| </head> |
| |
| <body> |
| |
| |
| |
| |
| <nav class="navbar is-primary"> |
| <div class="container"> |
| <!--container will be unwrapped when it's in docs--> |
| <div class="navbar-brand"> |
| <a href="/zh/" class="navbar-item "> |
| <!-- Pegasus Icon --> |
| <img src="/assets/images/pegasus.svg"> |
| </a> |
| <div class="navbar-item"> |
| <a href="/zh/docs" class="button is-primary is-outlined is-inverted"> |
| <span class="icon"><i class="fas fa-book"></i></span> |
| <span>Docs</span> |
| </a> |
| </div> |
| <div class="navbar-item is-hidden-desktop"> |
| |
| |
| <!--A simple language switch button that only supports zh and en.--> |
| <!--IF its language is zh, then switches to en.--> |
| |
| <!--If you don't want a url to be relativized, you can add a space explicitly into the href to |
| prevents a url from being relativized by polyglot.--> |
| <a class="button is-primary is-outlined is-inverted" href=" /overview/benchmark/"><strong>En</strong></a> |
| |
| </div> |
| <a role="button" class="navbar-burger burger" aria-label="menu" aria-expanded="false" data-target="navMenu"> |
| <!-- Appears in mobile mode only --> |
| <span aria-hidden="true"></span> |
| <span aria-hidden="true"></span> |
| <span aria-hidden="true"></span> |
| </a> |
| </div> |
| <div class="navbar-menu" id="navMenu"> |
| <div class="navbar-end"> |
| |
| <!--dropdown--> |
| <div class="navbar-item has-dropdown is-hoverable "> |
| <a href="" |
| class="navbar-link "> |
| |
| <span class="icon" style="margin-right: .25em"> |
| <i class="fas fa-users"></i> |
| </span> |
| |
| <span> |
| ASF |
| </span> |
| </a> |
| <div class="navbar-dropdown"> |
| |
| <a href="https://www.apache.org/" |
| class="navbar-item "> |
| Foundation |
| </a> |
| |
| <a href="https://www.apache.org/licenses/" |
| class="navbar-item "> |
| License |
| </a> |
| |
| <a href="https://www.apache.org/events/current-event.html" |
| class="navbar-item "> |
| Events |
| </a> |
| |
| <a href="https://www.apache.org/foundation/sponsorship.html" |
| class="navbar-item "> |
| Sponsorship |
| </a> |
| |
| <a href="https://www.apache.org/security/" |
| class="navbar-item "> |
| Security |
| </a> |
| |
| <a href="https://privacy.apache.org/policies/privacy-policy-public.html" |
| class="navbar-item "> |
| Privacy |
| </a> |
| |
| <a href="https://www.apache.org/foundation/thanks.html" |
| class="navbar-item "> |
| Thanks |
| </a> |
| |
| </div> |
| </div> |
| |
| |
| <!--dropdown--> |
| <div class="navbar-item has-dropdown is-hoverable "> |
| <a href="/zh/community" |
| class="navbar-link "> |
| |
| <span class="icon" style="margin-right: .25em"> |
| <i class="fas fa-user-plus"></i> |
| </span> |
| |
| <span> |
| 开源社区 |
| </span> |
| </a> |
| <div class="navbar-dropdown"> |
| |
| <a href="/zh/community/#contact-us" |
| class="navbar-item "> |
| 联系我们 |
| </a> |
| |
| <a href="/zh/community/#contribution" |
| class="navbar-item "> |
| 参与贡献 |
| </a> |
| |
| <a href="https://cwiki.apache.org/confluence/display/PEGASUS/Coding+guides" |
| class="navbar-item "> |
| 编码指引 |
| </a> |
| |
| <a href="https://github.com/apache/incubator-pegasus/issues?q=is%3Aissue+is%3Aopen+label%3Atype%2Fbug" |
| class="navbar-item "> |
| Bug 追踪 |
| </a> |
| |
| <a href="https://cwiki.apache.org/confluence/display/INCUBATOR/PegasusProposal" |
| class="navbar-item "> |
| Apache 提案 |
| </a> |
| |
| </div> |
| </div> |
| |
| |
| |
| <a href="/zh/blogs" |
| class="navbar-item "> |
| |
| <span class="icon" style="margin-right: .25em"> |
| <i class="fas fa-rss"></i> |
| </span> |
| |
| <span>Blog</span> |
| </a> |
| |
| |
| |
| <a href="/zh/docs/downloads" |
| class="navbar-item "> |
| |
| <span class="icon" style="margin-right: .25em"> |
| <i class="fas fa-fire"></i> |
| </span> |
| |
| <span>版本发布</span> |
| </a> |
| |
| |
| </div> |
| <div class="navbar-item is-hidden-mobile"> |
| |
| |
| <!--A simple language switch button that only supports zh and en.--> |
| <!--IF its language is zh, then switches to en.--> |
| |
| <!--If you don't want a url to be relativized, you can add a space explicitly into the href to |
| prevents a url from being relativized by polyglot.--> |
| <a class="button is-primary is-outlined is-inverted" href=" /overview/benchmark/"><strong>En</strong></a> |
| |
| </div> |
| </div> |
| </div> |
| </nav> |
| |
| <section class="section"> |
| <div class="container"> |
| <div class="columns is-multiline"> |
| <div class="column is-one-fourth"> |
| |
| |
| |
| <aside class="menu"> |
| |
| <p class="menu-label"></p> |
| <ul class="menu-list"> |
| |
| <li> |
| <a href="/zh/overview" |
| class=""> |
| 概览 |
| </a> |
| </li> |
| |
| <li> |
| <a href="/zh/overview/background" |
| class=""> |
| 项目背景 |
| </a> |
| </li> |
| |
| <li> |
| <a href="/zh/overview/architecture" |
| class=""> |
| 系统架构 |
| </a> |
| </li> |
| |
| <li> |
| <a href="/zh/overview/data-model" |
| class=""> |
| 数据模型 |
| </a> |
| </li> |
| |
| <li> |
| <a href="/zh/overview/benchmark" |
| class=""> |
| 性能测试 |
| </a> |
| </li> |
| |
| <li> |
| <a href="/zh/docs/build/compile-by-docker" |
| class=""> |
| 安装构建 |
| </a> |
| </li> |
| |
| <li> |
| <a href="/zh/overview/onebox" |
| class=""> |
| 体验 Onebox 集群 |
| </a> |
| </li> |
| |
| </ul> |
| |
| </aside> |
| |
| </div> |
| <div class="column is-half"> |
| |
| |
| |
| <div class="content"> |
| <h1 id="性能测试">性能测试</h1> |
| <h2 id="测试工具及配置">测试工具及配置</h2> |
| |
| <ul> |
| <li>使用<a href="https://github.com/xiaomi/pegasus-ycsb">YCSB</a>中的Pegasus Java Client进行测试</li> |
| <li>设置<code class="language-plaintext highlighter-rouge">requestdistribution=zipfian</code>,可以理解为遵守80/20原则的数据分布,即80%的访问都集中在20%的内容上。参考<a href="https://en.wiktionary.org/wiki/Zipfian_distribution#English">Zipfian distribution</a>.</li> |
| </ul> |
| |
| <h3 id="测试结果说明">测试结果说明</h3> |
| <ul> |
| <li>Case:分为只读测试<code class="language-plaintext highlighter-rouge">Read</code>、只写测试<code class="language-plaintext highlighter-rouge">Write</code>、读写混合测试<code class="language-plaintext highlighter-rouge">Read & Write</code></li> |
| <li>threads:写为 <code class="language-plaintext highlighter-rouge">a * b</code> 的形式,其中<code class="language-plaintext highlighter-rouge">a</code>表示client的实例数,即YCSB是运行在几个节点上的。<code class="language-plaintext highlighter-rouge">b</code>表示线程数,即YCSB中的<code class="language-plaintext highlighter-rouge">threadcount</code>配置项的值</li> |
| <li>RW Ratio:读写操作比,即YCSB配置中的<code class="language-plaintext highlighter-rouge">readproportion</code>与<code class="language-plaintext highlighter-rouge">updateproportion</code>或<code class="language-plaintext highlighter-rouge">insertproportion</code>的比值</li> |
| <li>duration:测试总时长,单位小时</li> |
| <li>R-QPS:每秒读操作数</li> |
| <li>R-AVG-Lat, R-P99-Lat, R-P999-Lat:读操作的平均,P99,P999延迟,单位微秒</li> |
| <li>W-QPS:每秒写操作数</li> |
| <li>W-AVG-Lat, W-P99-Lat, W-P999-Lat:写操作的平均,P99,P999延迟,单位微秒</li> |
| </ul> |
| |
| <h2 id="各版本的性能测试">各版本的性能测试</h2> |
| |
| <h3 id="240">2.4.0</h3> |
| |
| <h4 id="测试环境">测试环境</h4> |
| |
| <h5 id="硬件配置">硬件配置</h5> |
| |
| <ul> |
| <li>CPU:Intel® Xeon® Silver 4210 * 2 2.20 GHz / 3.20 GHz</li> |
| <li>内存:128 GB</li> |
| <li>磁盘:SSD 480 GB * 8</li> |
| <li>网卡:带宽 10 Gb</li> |
| </ul> |
| |
| <h5 id="集群规模">集群规模</h5> |
| |
| <ul> |
| <li>replica server节点数:5</li> |
| <li>测试表的Partition数:64</li> |
| </ul> |
| |
| <h4 id="测试结果">测试结果</h4> |
| |
| <ul> |
| <li>单条数据大小:1KB</li> |
| </ul> |
| |
| <table> |
| <thead> |
| <tr> |
| <th>Case</th> |
| <th>threads</th> |
| <th>Read/Write</th> |
| <th>R-QPS</th> |
| <th>R-AVG-Lat</th> |
| <th>R-P99-Lat</th> |
| <th>W-QPS</th> |
| <th>W-AVG-Lat</th> |
| <th>W-P99-Lat</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td>Write</td> |
| <td>3 * 15</td> |
| <td>0:1</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| <td>56,953</td> |
| <td>787</td> |
| <td>1,786</td> |
| </tr> |
| <tr> |
| <td>Read</td> |
| <td>3 * 50</td> |
| <td>1:0</td> |
| <td>360,642</td> |
| <td>413</td> |
| <td>984</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 30</td> |
| <td>1:1</td> |
| <td>62,572</td> |
| <td>464</td> |
| <td>5,274</td> |
| <td>62,561</td> |
| <td>985</td> |
| <td>3,764</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 15</td> |
| <td>1:3</td> |
| <td>16,844</td> |
| <td>372</td> |
| <td>3,980</td> |
| <td>50,527</td> |
| <td>762</td> |
| <td>1,551</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 15</td> |
| <td>1:30</td> |
| <td>1,861</td> |
| <td>381</td> |
| <td>3,557</td> |
| <td>55,816</td> |
| <td>790</td> |
| <td>1,688</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 30</td> |
| <td>3:1</td> |
| <td>140,484</td> |
| <td>351</td> |
| <td>3,277</td> |
| <td>46,822</td> |
| <td>856</td> |
| <td>2,044</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 50</td> |
| <td>30:1</td> |
| <td>336,106</td> |
| <td>419</td> |
| <td>1,221</td> |
| <td>11,203</td> |
| <td>763</td> |
| <td>1,276</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <h3 id="230">2.3.0</h3> |
| |
| <h4 id="测试环境-1">测试环境</h4> |
| |
| <p>同2.4.0</p> |
| |
| <h4 id="测试结果-1">测试结果</h4> |
| |
| <table> |
| <thead> |
| <tr> |
| <th>Case</th> |
| <th>threads</th> |
| <th>Read/Write</th> |
| <th>R-QPS</th> |
| <th>R-AVG-Lat</th> |
| <th>R-P99-Lat</th> |
| <th>W-QPS</th> |
| <th>W-AVG-Lat</th> |
| <th>W-P99-Lat</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td>Write</td> |
| <td>3 * 15</td> |
| <td>0:1</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| <td>42,386</td> |
| <td>1,060</td> |
| <td>6,628</td> |
| </tr> |
| <tr> |
| <td>Read</td> |
| <td>3 * 50</td> |
| <td>1:0</td> |
| <td>331,623</td> |
| <td>585</td> |
| <td>2,611</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 30</td> |
| <td>1:1</td> |
| <td>38,766</td> |
| <td>1,067</td> |
| <td>15,521</td> |
| <td>38,774</td> |
| <td>1,246</td> |
| <td>7,791</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 15</td> |
| <td>1:3</td> |
| <td>13,140</td> |
| <td>819</td> |
| <td>11,460</td> |
| <td>39,428</td> |
| <td>863</td> |
| <td>4,884</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 15</td> |
| <td>1:30</td> |
| <td>1,552</td> |
| <td>937</td> |
| <td>9,524</td> |
| <td>46,570</td> |
| <td>930</td> |
| <td>5,315</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 30</td> |
| <td>3:1</td> |
| <td>93,746</td> |
| <td>623</td> |
| <td>6,389</td> |
| <td>31,246</td> |
| <td>996</td> |
| <td>5,543</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 50</td> |
| <td>30:1</td> |
| <td>254,534</td> |
| <td>560</td> |
| <td>2,627</td> |
| <td>8,481</td> |
| <td>901</td> |
| <td>3,269</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <h3 id="1123">1.12.3</h3> |
| |
| <h4 id="测试环境-2">测试环境</h4> |
| |
| <h5 id="硬件配置-1">硬件配置</h5> |
| |
| <ul> |
| <li>CPU:Intel® Xeon® CPU E5-2620 v3 @ 2.40 GHz</li> |
| <li>内存:128 GB</li> |
| <li>磁盘:SSD 480 GB * 8</li> |
| <li>网卡:带宽 10 Gb</li> |
| </ul> |
| |
| <p>其他测试环境同2.4.0</p> |
| |
| <h4 id="测试结果-2">测试结果</h4> |
| |
| <ul> |
| <li>单条数据大小:320B</li> |
| </ul> |
| |
| <table> |
| <thead> |
| <tr> |
| <th>Case</th> |
| <th>threads</th> |
| <th>Read/Write</th> |
| <th>R-QPS</th> |
| <th>R-AVG-Lat</th> |
| <th>R-P99-Lat</th> |
| <th>W-QPS</th> |
| <th>W-AVG-Lat</th> |
| <th>W-P99-Lat</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 15</td> |
| <td>0:1</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| <td>41,068</td> |
| <td>728</td> |
| <td>3,439</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 15</td> |
| <td>1:3</td> |
| <td>16,011</td> |
| <td>242</td> |
| <td>686</td> |
| <td>48,036</td> |
| <td>851</td> |
| <td>4,027</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 30</td> |
| <td>30:1</td> |
| <td>279,818</td> |
| <td>295</td> |
| <td>873</td> |
| <td>9,326</td> |
| <td>720</td> |
| <td>3,355</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <ul> |
| <li>单条数据大小:1KB</li> |
| </ul> |
| |
| <table> |
| <thead> |
| <tr> |
| <th>Case</th> |
| <th>threads</th> |
| <th>Read/Write</th> |
| <th>R-QPS</th> |
| <th>R-AVG-Lat</th> |
| <th>R-P99-Lat</th> |
| <th>W-QPS</th> |
| <th>W-AVG-Lat</th> |
| <th>W-P99-Lat</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 15</td> |
| <td>0:1</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| <td>40,732</td> |
| <td>1,102</td> |
| <td>4,216</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 15</td> |
| <td>1:3</td> |
| <td>14,355</td> |
| <td>476</td> |
| <td>2,855</td> |
| <td>38,547</td> |
| <td>1,016</td> |
| <td>4,135</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 20</td> |
| <td>3:1</td> |
| <td>87,480</td> |
| <td>368</td> |
| <td>4,170</td> |
| <td>29,159</td> |
| <td>940</td> |
| <td>4,170</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 50</td> |
| <td>1:0</td> |
| <td>312,244</td> |
| <td>479</td> |
| <td>1,178</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <h3 id="1122">1.12.2</h3> |
| |
| <h4 id="测试环境-3">测试环境</h4> |
| |
| <p>测试环境同 1.12.3</p> |
| |
| <h4 id="测试结果-3">测试结果</h4> |
| |
| <ul> |
| <li>单条数据大小:320B</li> |
| </ul> |
| |
| <table> |
| <thead> |
| <tr> |
| <th>Case</th> |
| <th>threads</th> |
| <th>Read/Write</th> |
| <th>R-QPS</th> |
| <th>R-AVG-Lat</th> |
| <th>R-P99-Lat</th> |
| <th>W-QPS</th> |
| <th>W-AVG-Lat</th> |
| <th>W-P99-Lat</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 15</td> |
| <td>0:1</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| <td>40,439</td> |
| <td>739</td> |
| <td>2,995</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 15</td> |
| <td>1:3</td> |
| <td>16,022</td> |
| <td>309</td> |
| <td>759</td> |
| <td>48,078</td> |
| <td>830</td> |
| <td>3,995</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 30</td> |
| <td>30:1</td> |
| <td>244,392</td> |
| <td>346</td> |
| <td>652</td> |
| <td>8,137</td> |
| <td>731</td> |
| <td>2,995</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <h3 id="1116">1.11.6</h3> |
| |
| <h4 id="测试环境-4">测试环境</h4> |
| |
| <ul> |
| <li>测试接口:<code class="language-plaintext highlighter-rouge">multi_get()</code> 和 <code class="language-plaintext highlighter-rouge">batch_set()</code></li> |
| <li>一个hashkey下包含3条sortkey数据</li> |
| <li>单次<code class="language-plaintext highlighter-rouge">batch_set()</code>调用设置3个hashkey</li> |
| <li>单条数据大小:3KB</li> |
| <li>测试表的Partition数:128</li> |
| <li>rocksdb_block_cache_capacity = 40G</li> |
| <li>其他测试环境同 1.12.3</li> |
| </ul> |
| |
| <h4 id="测试结果-4">测试结果</h4> |
| |
| <table> |
| <thead> |
| <tr> |
| <th>Case</th> |
| <th>threads</th> |
| <th>Read/Write</th> |
| <th>duration</th> |
| <th>Max cache hit rate</th> |
| <th>R-QPS</th> |
| <th>R-AVG-Lat</th> |
| <th>R-P99-Lat</th> |
| <th>R-P999-Lat</th> |
| <th>W-QPS</th> |
| <th>W-AVG-Lat</th> |
| <th>W-P99-Lat</th> |
| <th>W-P999-Lat</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 15</td> |
| <td>20:1</td> |
| <td>1</td> |
| <td>10%</td> |
| <td>150K</td> |
| <td>263</td> |
| <td>808</td> |
| <td>12,615</td> |
| <td>8k</td> |
| <td>1,474</td> |
| <td>7,071</td> |
| <td>26,342</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 7</td> |
| <td>20:1</td> |
| <td>2</td> |
| <td>17%</td> |
| <td>75K</td> |
| <td>226</td> |
| <td>641</td> |
| <td>5,331</td> |
| <td>4K</td> |
| <td>1,017</td> |
| <td>4,583</td> |
| <td>14,983</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <h3 id="1111">1.11.1</h3> |
| |
| <h4 id="测试环境-5">测试环境</h4> |
| |
| <p>测试环境同 1.12.3</p> |
| |
| <h4 id="测试结果-5">测试结果</h4> |
| |
| <ul> |
| <li>单条数据大小:20KB * 2副本</li> |
| </ul> |
| |
| <table> |
| <thead> |
| <tr> |
| <th>Case</th> |
| <th>threads</th> |
| <th>Read/Write</th> |
| <th>duration</th> |
| <th>R-QPS</th> |
| <th>R-AVG-Lat</th> |
| <th>R-P99-Lat</th> |
| <th>W-QPS</th> |
| <th>W-AVG-Lat</th> |
| <th>W-P99-Lat</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td>Write</td> |
| <td>3 * 10</td> |
| <td>0:1</td> |
| <td>0.98</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| <td>8,439</td> |
| <td>3,557</td> |
| <td>32,223</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 15</td> |
| <td>1:3</td> |
| <td>0.66</td> |
| <td>3,159</td> |
| <td>4,428</td> |
| <td>34,495</td> |
| <td>9,472</td> |
| <td>3,251</td> |
| <td>25,071</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 30</td> |
| <td>30:1</td> |
| <td>1.25</td> |
| <td>64,358</td> |
| <td>1,330</td> |
| <td>13,975</td> |
| <td>2,145</td> |
| <td>1,699</td> |
| <td>6,467</td> |
| </tr> |
| <tr> |
| <td>Read</td> |
| <td>6 * 100</td> |
| <td>1:0</td> |
| <td>0.91</td> |
| <td>30,491</td> |
| <td>3,274</td> |
| <td>12,167</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <ul> |
| <li>单条数据大小:20KB * 3副本</li> |
| </ul> |
| |
| <table> |
| <thead> |
| <tr> |
| <th>Case</th> |
| <th>threads</th> |
| <th>Read/Write</th> |
| <th>duration</th> |
| <th>R-QPS</th> |
| <th>R-AVG-Lat</th> |
| <th>R-P99-Lat</th> |
| <th>W-QPS</th> |
| <th>W-AVG-Lat</th> |
| <th>W-P99-Lat</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td>Write</td> |
| <td>3 * 10</td> |
| <td>0:1</td> |
| <td>1.40</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| <td>5,919</td> |
| <td>5,063</td> |
| <td>40,639</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 15</td> |
| <td>1:3</td> |
| <td>1.11</td> |
| <td>1,876</td> |
| <td>6,927</td> |
| <td>44,639</td> |
| <td>5,632</td> |
| <td>5,612</td> |
| <td>76,095</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 30</td> |
| <td>30:1</td> |
| <td>1.63</td> |
| <td>49,341</td> |
| <td>1,751</td> |
| <td>21,615</td> |
| <td>1,644</td> |
| <td>1,935</td> |
| <td>11,159</td> |
| </tr> |
| <tr> |
| <td>Read</td> |
| <td>6 * 100</td> |
| <td>1:0</td> |
| <td>0.91</td> |
| <td>25,456</td> |
| <td>3,923</td> |
| <td>15,679</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <ul> |
| <li>单条数据大小:10KB * 2副本</li> |
| </ul> |
| |
| <table> |
| <thead> |
| <tr> |
| <th>Case</th> |
| <th>threads</th> |
| <th>Read/Write</th> |
| <th>duration</th> |
| <th>R-QPS</th> |
| <th>R-AVG-Lat</th> |
| <th>R-P99-Lat</th> |
| <th>W-QPS</th> |
| <th>W-AVG-Lat</th> |
| <th>W-P99-Lat</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td>Write</td> |
| <td>3 * 10</td> |
| <td>0:1</td> |
| <td>0.78</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| <td>14,181</td> |
| <td>2,110</td> |
| <td>15,468</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 15</td> |
| <td>1:3</td> |
| <td>0.52</td> |
| <td>4,024</td> |
| <td>5,209</td> |
| <td>41247</td> |
| <td>12,069</td> |
| <td>1,780</td> |
| <td>14,495</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 30</td> |
| <td>30:1</td> |
| <td>0.76</td> |
| <td>105,841</td> |
| <td>816</td> |
| <td>9613</td> |
| <td>3,527</td> |
| <td>1,107</td> |
| <td>4,155</td> |
| </tr> |
| <tr> |
| <td>Read</td> |
| <td>6 * 100</td> |
| <td>1:0</td> |
| <td>1.04</td> |
| <td>162,150</td> |
| <td>1,868</td> |
| <td>6733</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <ul> |
| <li>单条数据大小:10KB * 3副本</li> |
| </ul> |
| |
| <table> |
| <thead> |
| <tr> |
| <th>Case</th> |
| <th>threads</th> |
| <th>Read/Write</th> |
| <th>duration</th> |
| <th>R-QPS</th> |
| <th>R-AVG-Lat</th> |
| <th>R-P99-Lat</th> |
| <th>W-QPS</th> |
| <th>W-AVG-Lat</th> |
| <th>W-P99-Lat</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td>Write</td> |
| <td>3 * 10</td> |
| <td>0:1</td> |
| <td>1.16</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| <td>9,603</td> |
| <td>3,115</td> |
| <td>20,468</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 15</td> |
| <td>1:3</td> |
| <td>0.69</td> |
| <td>3,043</td> |
| <td>5,657</td> |
| <td>38,783</td> |
| <td>9,126</td> |
| <td>3,140</td> |
| <td>27,956</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 30</td> |
| <td>30:1</td> |
| <td>0.89</td> |
| <td>90,135</td> |
| <td>937</td> |
| <td>13,324</td> |
| <td>3,002</td> |
| <td>1,185</td> |
| <td>4,816</td> |
| </tr> |
| <tr> |
| <td>Read</td> |
| <td>6 * 100</td> |
| <td>1:0</td> |
| <td>1.08</td> |
| <td>154,869</td> |
| <td>1,945</td> |
| <td>7,757</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <h3 id="1110">1.11.0</h3> |
| |
| <h4 id="测试环境-6">测试环境</h4> |
| |
| <p>测试环境同 1.12.3</p> |
| |
| <h4 id="测试结果-6">测试结果</h4> |
| |
| <ul> |
| <li>单条数据大小:320B</li> |
| </ul> |
| |
| <table> |
| <thead> |
| <tr> |
| <th>Case</th> |
| <th>threads</th> |
| <th>Read/Write</th> |
| <th>duration</th> |
| <th>R-QPS</th> |
| <th>R-AVG-Lat</th> |
| <th>R-P99-Lat</th> |
| <th>W-QPS</th> |
| <th>W-AVG-Lat</th> |
| <th>W-P99-Lat</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td>Write</td> |
| <td>3 * 10</td> |
| <td>0:1</td> |
| <td>1.89</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| <td>44,039</td> |
| <td>679</td> |
| <td>3,346</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 15</td> |
| <td>1:3</td> |
| <td>1.24</td> |
| <td>16,690</td> |
| <td>311</td> |
| <td>892</td> |
| <td>50,076</td> |
| <td>791</td> |
| <td>4,396</td> |
| </tr> |
| <tr> |
| <td>Read & Write</td> |
| <td>3 * 30</td> |
| <td>30:1</td> |
| <td>1.04</td> |
| <td>311,633</td> |
| <td>264</td> |
| <td>511</td> |
| <td>10,388</td> |
| <td>619</td> |
| <td>2,468</td> |
| </tr> |
| <tr> |
| <td>Read</td> |
| <td>6 * 100</td> |
| <td>1:0</td> |
| <td>0.17</td> |
| <td>978,884</td> |
| <td>623</td> |
| <td>1,671</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| </tr> |
| <tr> |
| <td>Read</td> |
| <td>12 * 100</td> |
| <td>1:0</td> |
| <td>0.28</td> |
| <td>1,194,394</td> |
| <td>1,003</td> |
| <td>2,933</td> |
| <td>-</td> |
| <td>-</td> |
| <td>-</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <h2 id="不同场景下的性能测试">不同场景下的性能测试</h2> |
| |
| <p>如无特殊说明,测试环境如下:</p> |
| |
| <ul> |
| <li>测试环境同 1.12.3</li> |
| <li>单条数据大小:1KB</li> |
| <li>客户端: |
| <ul> |
| <li>节点数:3</li> |
| <li>版本号:1.11.10-thrift-0.11.0-inlined-release</li> |
| </ul> |
| </li> |
| <li>服务端: |
| <ul> |
| <li>节点数:5</li> |
| <li>版本号:1.12.3</li> |
| <li>表分片数:64</li> |
| <li>配置:<code class="language-plaintext highlighter-rouge">rocksdb_limiter_max_write_megabytes_per_sec = 500</code>, <code class="language-plaintext highlighter-rouge">rocksdb_limiter_enable_auto_tune = false</code></li> |
| </ul> |
| </li> |
| </ul> |
| |
| <h3 id="集群吞吐能力">集群吞吐能力</h3> |
| |
| <p>该项测试旨在对比在同一集群在不同client请求吞吐下的延迟变化。</p> |
| |
| <blockquote> |
| <p>注意:未开启RocksDB限速</p> |
| </blockquote> |
| |
| <p><img src="/assets/images/benchmark/5-node-write.png" alt="5-node-write" /></p> |
| |
| <p><img src="/assets/images/benchmark/5-node-read.png" alt="5-node-read" /></p> |
| |
| <p>由上图可知,写最大QPS大约为43K,读最大QPS大约370K,你可以根据吞吐估算对应的延迟。</p> |
| |
| <h3 id="是否开启rocksdb限速">是否开启RocksDB限速</h3> |
| |
| <blockquote> |
| <p>测试场景为:测试<code class="language-plaintext highlighter-rouge">threads</code>配置为:3 * 20,IPS大约为44K</p> |
| </blockquote> |
| |
| <p>Pegasus底层采用RocksDB做存储引擎,当数据写入增多,会触发更多的compaction操作,占用更多的磁盘IO,出现更多的毛刺现象。该项测试展示了开启RocksDB的限速后,可以降低compaction负载,从而显著的降低毛刺现象。</p> |
| |
| <p>下图分别展示了三种场景的IO使用率和写P99延迟情况:</p> |
| <ul> |
| <li><code class="language-plaintext highlighter-rouge">rocksdb_limiter_max_write_megabytes_per_sec = 0</code></li> |
| <li><code class="language-plaintext highlighter-rouge">rocksdb_limiter_max_write_megabytes_per_sec = 500</code> and <code class="language-plaintext highlighter-rouge">rocksdb_limiter_enable_auto_tune = false</code></li> |
| <li> |
| <p><code class="language-plaintext highlighter-rouge">rocksdb_limiter_max_write_megabytes_per_sec = 500</code> and <code class="language-plaintext highlighter-rouge">rocksdb_limiter_enable_auto_tune = true</code></p> |
| </li> |
| <li> |
| <p>磁盘IO占用: |
| <img src="/assets/images/benchmark/io-no-limit.png" alt="io-no-limit" /> |
| <img src="/assets/images/benchmark/io-limit-500MB.png" alt="io-limit-500MB" /> |
| <img src="/assets/images/benchmark/io-limit-500MB-auto.png" alt="io-limit-500MB-auto" /></p> |
| </li> |
| <li>P99延迟: |
| <img src="/assets/images/benchmark/no-limit-set.png" alt="no-limit-set" /> |
| <img src="/assets/images/benchmark/500-limit-set.png" alt="500-limit-set" /> |
| <img src="/assets/images/benchmark/500-limit-auto-set.png" alt="500-limit-auto-set" /></li> |
| </ul> |
| |
| <p>可以发现,开启RocksDB限速后,磁盘IO使用率得到降低,写延迟的毛刺现象也被大大缓解。</p> |
| |
| <p><img src="/assets/images/benchmark/limit.png" alt="limit" /> |
| 我们从YCSB的测试结果也可以看到:</p> |
| |
| <ul> |
| <li>开启限速后,吞吐提升了约5%</li> |
| <li>开启限速并开启auto-tune后,吞吐提升了约20%</li> |
| <li>开启限速后,仅对极端情况下的延迟(P999/P9999)有显著改善作用,但对于大部分请求来说,改善并不明显</li> |
| </ul> |
| |
| <p>但是<strong>需要注意</strong>的是:</p> |
| |
| <p>auto-tune功能在单条数据较大的场景下可能会引发<a href="https://github.com/facebook/rocksdb/wiki/Write-Stalls">write stall</a>,请合理评估是否在你的环境中开启auto-tune。</p> |
| |
| <h3 id="集群规模-1">集群规模</h3> |
| |
| <p>该项测试旨在观察,不同replica server数量对读写吞吐的影响。</p> |
| |
| <blockquote> |
| <p>测试场景为:测试<code class="language-plaintext highlighter-rouge">Case</code>为只读和只写</p> |
| </blockquote> |
| |
| <p><img src="/assets/images/benchmark/node-qps-write.png" alt="node-write" /></p> |
| |
| <p><img src="/assets/images/benchmark/node-qps-read.png" alt="node-read" /></p> |
| |
| <p>由图中可以看到:</p> |
| |
| <ul> |
| <li>扩容对写吞吐的提升要优于读吞吐的提升</li> |
| <li>扩容带来的吞吐提升并不是线性的</li> |
| </ul> |
| |
| <p>你可以根据该项测试估计不同集群规模所能承载的吞吐量</p> |
| |
| <h3 id="不同的表分片数">不同的表分片数</h3> |
| |
| <p>该项测试旨在观察,表的不同分片对吞吐的影响。</p> |
| |
| <blockquote> |
| <p>测试场景为: |
| 仅读:<code class="language-plaintext highlighter-rouge">threads</code>配置为:3 * 50 |
| 仅写:<code class="language-plaintext highlighter-rouge">threads</code>配置为:3 * 40</p> |
| </blockquote> |
| |
| <p><img src="/assets/images/benchmark/partition.png" alt="partition" /></p> |
| |
| <p>由图中可以看到:</p> |
| <ul> |
| <li>增加分片可以提高读吞吐</li> |
| <li>但是降低了写吞吐</li> |
| </ul> |
| |
| <p>所以请根据你的业务需求评估表分片数。</p> |
| |
| <p>除此之外,若分片数过小,可能会导致单分片过大,磁盘分布倾斜等问题。在生产环境中,如无特别需求,建议单分片大小保持在10GB以内。</p> |
| |
| </div> |
| </div> |
| <div class="column is-one-fourth is-hidden-mobile" style="padding-left: 3rem"> |
| |
| <p class="menu-label"> |
| <span class="icon"> |
| <i class="fa fa-bars" aria-hidden="true"></i> |
| </span> |
| 本页导航 |
| </p> |
| <ul class="menu-list"> |
| <li><a href="#性能测试">性能测试</a> |
| <ul> |
| <li><a href="#测试工具及配置">测试工具及配置</a> |
| <ul> |
| <li><a href="#测试结果说明">测试结果说明</a></li> |
| </ul> |
| </li> |
| <li><a href="#各版本的性能测试">各版本的性能测试</a> |
| <ul> |
| <li><a href="#240">2.4.0</a> |
| <ul> |
| <li><a href="#测试环境">测试环境</a> |
| <ul> |
| <li><a href="#硬件配置">硬件配置</a></li> |
| <li><a href="#集群规模">集群规模</a></li> |
| </ul> |
| </li> |
| <li><a href="#测试结果">测试结果</a></li> |
| </ul> |
| </li> |
| <li><a href="#230">2.3.0</a> |
| <ul> |
| <li><a href="#测试环境-1">测试环境</a></li> |
| <li><a href="#测试结果-1">测试结果</a></li> |
| </ul> |
| </li> |
| <li><a href="#1123">1.12.3</a> |
| <ul> |
| <li><a href="#测试环境-2">测试环境</a> |
| <ul> |
| <li><a href="#硬件配置-1">硬件配置</a></li> |
| </ul> |
| </li> |
| <li><a href="#测试结果-2">测试结果</a></li> |
| </ul> |
| </li> |
| <li><a href="#1122">1.12.2</a> |
| <ul> |
| <li><a href="#测试环境-3">测试环境</a></li> |
| <li><a href="#测试结果-3">测试结果</a></li> |
| </ul> |
| </li> |
| <li><a href="#1116">1.11.6</a> |
| <ul> |
| <li><a href="#测试环境-4">测试环境</a></li> |
| <li><a href="#测试结果-4">测试结果</a></li> |
| </ul> |
| </li> |
| <li><a href="#1111">1.11.1</a> |
| <ul> |
| <li><a href="#测试环境-5">测试环境</a></li> |
| <li><a href="#测试结果-5">测试结果</a></li> |
| </ul> |
| </li> |
| <li><a href="#1110">1.11.0</a> |
| <ul> |
| <li><a href="#测试环境-6">测试环境</a></li> |
| <li><a href="#测试结果-6">测试结果</a></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| <li><a href="#不同场景下的性能测试">不同场景下的性能测试</a> |
| <ul> |
| <li><a href="#集群吞吐能力">集群吞吐能力</a></li> |
| <li><a href="#是否开启rocksdb限速">是否开启RocksDB限速</a></li> |
| <li><a href="#集群规模-1">集群规模</a></li> |
| <li><a href="#不同的表分片数">不同的表分片数</a></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| |
| |
| </div> |
| </div> |
| </div> |
| </section> |
| <footer class="footer"> |
| <div class="container"> |
| <div class="content is-small has-text-centered"> |
| <div style="margin-bottom: 20px;"> |
| <a href="http://incubator.apache.org"> |
| <img src="/assets/images/egg-logo.png" |
| width="15%" |
| alt="Apache Incubator"/> |
| </a> |
| </div> |
| Copyright © 2023 <a href="http://www.apache.org">The Apache Software Foundation</a>. |
| Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version |
| 2.0</a>. |
| <br><br> |
| |
| Apache Pegasus is an effort undergoing incubation at The Apache Software Foundation (ASF), |
| sponsored by the Apache Incubator. Incubation is required of all newly accepted projects |
| until a further review indicates that the infrastructure, communications, and decision making process |
| have stabilized in a manner consistent with other successful ASF projects. While incubation status is |
| not necessarily a reflection of the completeness or stability of the code, it does indicate that the |
| project has yet to be fully endorsed by the ASF. |
| |
| <br><br> |
| Apache Pegasus, Pegasus, Apache, the Apache feather logo, and the Apache Pegasus project logo are either |
| registered trademarks or trademarks of The Apache Software Foundation in the United States and other |
| countries. |
| </div> |
| </div> |
| </footer> |
| <script src="/assets/js/app.js" type="text/javascript"></script> |
| </body> |
| </html> |