测试方法
<p>购买DDS实例后,您可以参照本文对实例性能进行性能测试。</p>
<p><span style="font-size:18px"><strong>测试环境</strong></span></p>
<ul>
<li>地域:华北1</li>
<li>可用区:可用区A</li>
<li>实例类型:三节点副本集实例</li>
<li>网络类型:专有网络</li>
<li>云服务器ECS:4台g5.2xlarge.4(8核32GB)</li>
<li>MongoDB版本:MongoDB3.4</li>
</ul>
<p><span style="font-size:18px"><strong>前提条件</strong></span></p>
<ul>
<li>您已成功创建DDS实例,可参考<a href="https://pinganyun.com/ssr/help/database/mongodb/Manual.Instance_Management.Create_Instance.Create_Common_Instance" target="_blank">创建常规实例</a>。</li>
<li>您已成功创建用户,可参考<a href="https://pinganyun.com/ssr/help/database/mongodb/Manual.Account.Create_Account" target="_blank">创建用户</a>。</li>
<li>您已成功创建数据库,可参考<a href="https://pinganyun.com/ssr/help/database/mongodb/Manual.Database.Create_Database" target="_blank">创建数据库</a>。</li>
<li>您已成功授权账号与数据库权限,可参考<a href="https://pinganyun.com/ssr/help/database/mongodb/Manual.Account.Modify_Permissions" target="_blank">授权指定账号访问数据库</a>或<a href="https://pinganyun.com/ssr/help/database/mongodb/Manual.Database.Modify_Permissions" target="_blank">授权数据库允许指定账号访问</a>。</li>
<li>您已成功创建ECS,可参考<a href="https://pinganyun.com/ssr/help/database/mongodb/Start.Create_ECS" target="_blank">创建ECS</a>。</li>
<li>您已成功开通白名单,可参考<a href="https://pinganyun.com/ssr/help/database/mongodb/Manual.Security_Management.Create_Whitelist" target="_blank">开通白名单</a>。</li>
<li>您可以通过ECS连接DDS实例,可参考<a href="https://pinganyun.com/ssr/help/database/mongodb/Start.5d634c75e9ca5f712e340ec9.5d634d426d37dd7142129b1d" target="_blank">客户端连接</a>。</li>
</ul>
<p><span style="font-size:18px"><strong>测试工具</strong></span></p>
<p>本次测试采用开源社区的YCSB 0.5.0 版本的测试工具。</p>
<p>YCSB是一款Java编写的、支持多种数据库的性能测试工具,具体安装和使用方法请参见<a href="https://github.com/brianfrankcooper/YCSB/tree/master/mongodb" target="_blank">YCSB官方文档</a>。</p>
<p><span style="font-size:18px"><strong>测试步骤</strong></span></p>
<p>1. 在进行测试前,需要提交工单修改备节点的优先级为0,防止在测试过程中出现节点漂移。</p>
<p>2. 修改workloada配置中的recordcount、operationcount、readproportion和updateproportion。其中:</p>
<ul>
<li>测试数据量:recordcount(测试数据集的记录条数)和operationcount(测试过程中执行的操作总数)之和,这两个参数因不同实例的性能不同,为控制压测时间,取值也有所区别。</li>
<li>readproportion:读操作百分比,固定为0.8。</li>
<li>updateproportion:更新操作百分比,固定为0.2。</li>
<li>maxexecutiontime:测试执行时间,您可以根据实际情况调整。</li>
<li>Threads:控制客户端连接数。</li>
</ul>
<p>3. 执行以下命令,准备数据。</p>
<table border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="background-color:#f7f8fa">
<p><span style="font-family:Consolas">./bin/ycsb load mongodb -s -P workloads/workloada -p mongodb.url=mongodb://<<em>User-name</em>>:<<em>Passward</em>>@<<em>Host-name</em>>:<<em>Port</em>>/<<em>Database-name</em>>?w=1 -threads 100 > outputLoad.txt</span><span style="font-family:Consolas"> </span></p>
</td>
</tr>
</tbody>
</table>
<p>4. 执行以下命令,进行性能测试。</p>
<table border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="background-color:#f7f8fa">
<p><span style="font-family:Consolas">./bin/ycsb run mongodb -s -P workloads/workloada -p mongodb.url=mongodb://<<em>User-name</em>>:<<em>Passward</em>>@<<em>Host-name</em>>:<<em>Port</em>>/<<em>Database-name</em>>?w=0 -threads 150 > outputRun.txt</span></p>
</td>
</tr>
</tbody>
</table>
<p>YCSB常用选项说明:</p>
<table border="1" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="background-color:#ededed; vertical-align:top">
<p><strong>选项</strong></p>
</td>
<td style="background-color:#ededed; vertical-align:top">
<p><strong>说明</strong></p>
</td>
</tr>
<tr>
<td>
<p>-P</p>
</td>
<td>
<p>设置workload 模式。</p>
</td>
</tr>
<tr>
<td>
<p>-p</p>
</td>
<td>
<p>设置客户端的参数。</p>
</td>
</tr>
<tr>
<td>
<p><em>User-name</em></p>
</td>
<td>
<p>连接实例的账号,可参考<a href="https://pinganyun.com/ssr/help/database/mongodb/Manual.Account.Create_Account" target="_blank">创建账号</a>。</p>
</td>
</tr>
<tr>
<td>
<p><em>Passward</em></p>
</td>
<td>
<p>创建账号时的密码,可参考<a href="https://pinganyun.com/ssr/help/database/mongodb/Manual.Account.Create_Account" target="_blank">创建账号</a>。</p>
</td>
</tr>
<tr>
<td>
<p><em>Host-name</em></p>
</td>
<td>
<p>实例的访问域名,可参考<a href="https://pinganyun.com/ssr/help/database/mongodb/Manual.Instance_Management.View_Instance.View_Common_Instance" target="_blank">查看实例基本信息</a>。</p>
</td>
</tr>
<tr>
<td>
<p><em>Port</em></p>
</td>
<td>
<p>实例的连接端口,可参考<a href="https://pinganyun.com/ssr/help/database/mongodb/Manual.Instance_Management.View_Instance.View_Common_Instance" target="_blank">查看实例基本信息</a>。</p>
</td>
</tr>
<tr>
<td>
<p><em>Database-name</em></p>
</td>
<td>
<p>连接实例的认证数据库,可参考<a href="https://pinganyun.com/ssr/help/database/mongodb/Manual.Account.Create_Account" target="_blank">创建账号</a>。</p>
</td>
</tr>
<tr>
<td>
<p>w</p>
</td>
<td>
<p>设置writeConcern模式:</p>
<ul>
<li>1:应答式写入</li>
<li>0:非应答式写入</li>
</ul>
</td>
</tr>
<tr>
<td>
<p>-threads</p>
</td>
<td>
<p>测试中使用的线程数。</p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-size:18px"><strong>测试指标</strong></span></p>
<p>查看outputRun.txt中的测试结果:</p>
<ul>
<li>throughput:客户端测试吞吐量,即读写操作数。</li>
<li>RAL:读操作平均延迟,单位:us。</li>
<li>WAL:写操作平均延迟,单位:us。</li>
</ul>
提交成功!非常感谢您的反馈,我们会继续努力做到更好!