| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width,initial-scale=1"> |
| <title>Distributed James Server — Database benchmarks :: Apache James</title> |
| <meta name="generator" content="Antora 3.1.2"> |
| <link rel="stylesheet" href="../../../_/css/site.css"> |
| </head> |
| <body class="article"> |
| <header class="header"> |
| <nav class="navbar"> |
| <div class="navbar-brand"> |
| <a class="navbar-item" href="https://james.apache.org"><img src="/_/img/james.svg" alt="james logo"> Apache James</a> |
| <button class="navbar-burger" data-target="topbar-nav"> |
| <span></span> |
| <span></span> |
| <span></span> |
| </button> |
| </div> |
| <div id="topbar-nav" class="navbar-menu"> |
| <div class="navbar-end"> |
| <a class="navbar-item" href="#">Home</a> |
| <div class="navbar-item has-dropdown is-hoverable"> |
| <a class="navbar-link" href="#">Products</a> |
| <div class="navbar-dropdown"> |
| <div class="navbar-item"><strong>James server</strong></div> |
| <a class="navbar-item" href="https://github.com/apache/james-project">Repository</a> |
| <a class="navbar-item" href="https://issues.apache.org/jira/projects/JAMES/issues">Issue Tracker</a> |
| <hr class="navbar-divider"> |
| <a class="navbar-item" href="https://james.apache.org/mime4j/index.html">Mime4J</a> |
| <a class="navbar-item" href="https://james.apache.org/jsieve/index.html">jSieve</a> |
| <a class="navbar-item" href="https://james.apache.org/jspf/index.html">jSPF</a> |
| <a class="navbar-item" href="https://james.apache.org/jdkim/index.html">jDKIM</a> |
| <a class="navbar-item" href="https://james.apache.org/hupa/index.html">HUPA</a> |
| </div> |
| </div> |
| <div class="navbar-item has-dropdown is-hoverable"> |
| <a class="navbar-link" href="#">Community</a> |
| <div class="navbar-dropdown"> |
| <!-- Not ideal but dropping the version in the href requires tweaking james-projet docs module first --> |
| <a class="navbar-item" href="/james-project/3.6.0/community/mailing-lists.html">Mailing lists</a> |
| <a class="navbar-item" href="https://gitter.im/apache/james-project"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" class="logo-gitter-sign" data-v-44ebcb1a=""><rect x="15" y="5" width="2" height="10"></rect> <rect x="10" y="5" width="2" height="20"></rect> <rect x="5" y="5" width="2" height="20"></rect> <rect width="2" height="15"></rect></svg> Gitter</a> |
| <a class="navbar-item" href="https://twitter.com/ApacheJames"> |
| <span class="icon"> |
| <svg aria-hidden="true" data-icon="twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"> |
| <path fill="#57aaee" d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"></path> |
| </svg> |
| </span> Twitter |
| </a> |
| <a class="navbar-item" href="#"> <svg class="octicon octicon-mark-github v-align-middle" viewBox="0 0 16 16" version="1.1" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg> Github</a> |
| </div> |
| </div> |
| <!-- <div class="navbar-item"> |
| <span class="control"> |
| <a class="button is-primary" href="#">Download</a> |
| </span> |
| </div> --> |
| </div> |
| </div> |
| </nav> |
| </header> |
| <div class="body"> |
| <div class="nav-container" data-component="james-distributed-app" data-version="3.8.0"> |
| <aside class="nav"> |
| <div class="panels"> |
| <div class="nav-panel-menu is-active" data-panel="menu"> |
| <nav class="nav-menu"> |
| <button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" style="display: none"></button> |
| <h3 class="title"><a href="../index.html">Apache James Distributed Server</a></h3> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="0"> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="1"> |
| <button class="nav-item-toggle"></button> |
| <a class="nav-link" href="../index.html">Distributed James Application</a> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="2"> |
| <a class="nav-link" href="../objectives.html">Objectives and motivation</a> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <button class="nav-item-toggle"></button> |
| <a class="nav-link" href="../architecture/index.html">Architecture</a> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../architecture/implemented-standards.html">Implemented standards</a> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../architecture/consistency-model.html">Consistency Model</a> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../architecture/specialized-instances.html">Specialized instances</a> |
| </li> |
| </ul> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <button class="nav-item-toggle"></button> |
| <a class="nav-link" href="../run/index.html">Run</a> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../run/run-java.html">Run with Java</a> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../run/run-docker.html">Run with Docker</a> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <button class="nav-item-toggle"></button> |
| <a class="nav-link" href="../run/run-kubernetes.html">Run with Kubernetes</a> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../run/k8s-checklist.html">Deployment Checklist</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../run/k8s-logsMetrics.html">Logs & Metrics</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../run/k8s-values.html">values.yaml</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../run/k8s-secrets.html">secrets.yaml</a> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <button class="nav-item-toggle"></button> |
| <a class="nav-link" href="../configure/index.html">Configuration</a> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="3"> |
| <button class="nav-item-toggle"></button> |
| <span class="nav-text">Protocols</span> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/imap.html">imapserver.xml</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/jmap.html">jmap.properties</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/jmx.html">jmx.properties</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/smtp.html">smtpserver.xml & lmtpserver.xml</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/smtp-hooks.html">Packaged SMTP hooks</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/pop3.html">pop3server.xml</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/webadmin.html">webadmin.properties</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/ssl.html">SSL & TLS</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/sieve.html">Sieve & ManageSieve</a> |
| </li> |
| </ul> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <button class="nav-item-toggle"></button> |
| <span class="nav-text">Storage dependencies</span> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/blobstore.html">blobstore.properties</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/cassandra.html">cassandra.properties</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/opensearch.html">opensearch.properties</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/rabbitmq.html">rabbitmq.properties</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/redis.html">redis.properties</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/tika.html">tika.properties</a> |
| </li> |
| </ul> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <button class="nav-item-toggle"></button> |
| <span class="nav-text">Core components</span> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/batchsizes.html">batchsizes.properties</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/dns.html">dnsservice.xml</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/domainlist.html">domainlist.xml</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/healthcheck.html">healthcheck.properties</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/mailetcontainer.html">mailetcontainer.xml</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/mailets.html">Packaged Mailets</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/matchers.html">Packaged Matchers</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/mailrepositorystore.html">mailrepositorystore.xml</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/recipientrewritetable.html">recipientrewritetable.xml</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/search.html">search.properties</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/usersrepository.html">usersrepository.xml</a> |
| </li> |
| </ul> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <button class="nav-item-toggle"></button> |
| <span class="nav-text">Extensions</span> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/vault.html">deletedMessageVault.properties</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/extensions.html">extensions.properties</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/listeners.html">listeners.xml</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/spam.html">Anti-Spam setup</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/remote-delivery-error-handling.html">About RemoteDelivery error handling</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/collecting-contacts.html">Contact collection</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/collecting-events.html">Event collection</a> |
| </li> |
| <li class="nav-item" data-depth="4"> |
| <a class="nav-link" href="../configure/dsn.html">ESMTP DSN support</a> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <button class="nav-item-toggle"></button> |
| <a class="nav-link" href="../operate/index.html">Operate</a> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../operate/guide.html">Operator guide</a> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../operate/performanceChecklist.html">Performance checklist</a> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../operate/logging.html">Logging</a> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../operate/webadmin.html">WebAdmin REST administration API</a> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../operate/metrics.html">Metrics</a> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../operate/migrating.html">Migrating existing data</a> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../operate/cli.html">Command Line Interface</a> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../operate/cassandra-migration.html">Cassandra migration</a> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../operate/security.html">Security checklist</a> |
| </li> |
| </ul> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <button class="nav-item-toggle"></button> |
| <a class="nav-link" href="../extending/index.html">Extending server behavior</a> |
| <ul class="nav-list"> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../extending/mail-processing.html">Custom mail processing components</a> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../extending/mailbox-listeners.html">Custom Mailbox Listeners</a> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../extending/smtp-hooks.html">Custom SMTP hooks</a> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../extending/webadmin-routes.html">Custom WebAdmin routes</a> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="../extending/imap.html">Custom IMAP processing</a> |
| </li> |
| </ul> |
| </li> |
| <li class="nav-item" data-depth="2"> |
| <button class="nav-item-toggle"></button> |
| <a class="nav-link" href="index.html">Performance benchmark</a> |
| <ul class="nav-list"> |
| <li class="nav-item is-current-page" data-depth="3"> |
| <a class="nav-link" href="db-benchmark.html">Database benchmarks</a> |
| </li> |
| <li class="nav-item" data-depth="3"> |
| <a class="nav-link" href="james-benchmark.html">James benchmarks</a> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </nav> |
| </div> |
| <div class="nav-panel-explore" data-panel="explore"> |
| <div class="context"> |
| <span class="title">Apache James Distributed Server</span> |
| <span class="version">3.8.0 SNAPSHOT</span> |
| </div> |
| <ul class="components"> |
| <li class="component is-current"> |
| <div class="title"><a href="../index.html">Apache James Distributed Server</a></div> |
| <ul class="versions"> |
| <li class="version is-current is-latest"> |
| <a href="../index.html">3.8.0 SNAPSHOT</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <div class="title"><a href="../../../james-project/3.8.0/index.html">Apache James Server</a></div> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../james-project/3.8.0/index.html">3.8.0 SNAPSHOT</a> |
| </li> |
| <li class="version"> |
| <a href="../../../james-project/3.6.0/index.html">3.6.0 Snapshot</a> |
| </li> |
| </ul> |
| </li> |
| <li class="component"> |
| <div class="title"><a href="../../../james-site/latest/index.html">Apache James Site</a></div> |
| <ul class="versions"> |
| <li class="version is-latest"> |
| <a href="../../../james-site/latest/index.html">latest</a> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </aside> |
| </div> |
| <main class="article"> |
| <div class="toolbar" role="navigation"> |
| <button class="nav-toggle"></button> |
| <a href="../../../james-site/latest/homepage.html" class="home-link"></a> |
| <nav class="breadcrumbs" aria-label="breadcrumbs"> |
| <ul> |
| <li><a href="../index.html">Apache James Distributed Server</a></li> |
| <li><a href="../index.html">Distributed James Application</a></li> |
| <li><a href="index.html">Performance benchmark</a></li> |
| <li><a href="db-benchmark.html">Database benchmarks</a></li> |
| </ul> |
| </nav> |
| <div class="edit-this-page"><a href="https://github.com/apache/james-project/blob/master/server/apps/distributed-app/docs/modules/ROOT/pages/benchmark/db-benchmark.adoc">Edit this Page</a></div> |
| </div> |
| <div class="content"> |
| <aside class="toc sidebar" data-title="Contents" data-levels="2"> |
| <div class="toc-menu"></div> |
| </aside> |
| <article class="doc"> |
| <h1 class="page">Distributed James Server — Database benchmarks</h1> |
| <div id="preamble"> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>This document provides basic performance of Distributed James' databases, benchmark methodologies as a basis for a James administrator who |
| can test and evaluate if his Distributed James databases are performing well.</p> |
| </div> |
| <div class="paragraph"> |
| <p>It includes:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>A sample deployment topology</p> |
| </li> |
| <li> |
| <p>Propose benchmark methodology and base performance for each database. This aims to help operators to quickly identify |
| performance issues and compliance of their databases.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_sample_deployment_topology"><a class="anchor" href="#_sample_deployment_topology"></a>Sample deployment topology</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>We deploy a sample topology of Distributed James with these following databases:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Apache Cassandra 4 as main database: 3 nodes, each node has 8 OVH vCores CPU and 30 GB memory limit (OVH b2-30 instance).</p> |
| </li> |
| <li> |
| <p>OpenDistro 1.13.1 as search engine: 3 nodes, each node has 8 OVH vCores CPU and 30 GB memory limit (OVH b2-30 instance).</p> |
| </li> |
| <li> |
| <p>RabbitMQ 3.8.17 as message queue: 3 Kubernetes pods, each pod has 0.6 OVH vCore CPU and 2 GB memory limit.</p> |
| </li> |
| <li> |
| <p>OVH Swift S3 as an object storage</p> |
| </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>With the above system, our email service operates stably with valuable performance. |
| For a more details, it can handle a load throughput up to about 1000 JMAP requests per second with 99th percentile latency is 400ms.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_benchmark_methodologies_and_base_performances"><a class="anchor" href="#_benchmark_methodologies_and_base_performances"></a>Benchmark methodologies and base performances</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>We are willing to share the benchmark methodologies and the result to you as a reference to evaluate your Distributed James' performance. |
| Other evaluation methods are welcome, as long as your databases exhibit similar or even better performance than ours. |
| It is up to your business needs. If your databases shows results that fall far from our baseline performance, there’s a good chance that |
| there are problems with your system, and you need to check it out thoroughly.</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="_benchmark_cassandra"><a class="anchor" href="#_benchmark_cassandra"></a>Benchmark Cassandra</h3> |
| <div class="sect3"> |
| <h4 id="_benchmark_methodology"><a class="anchor" href="#_benchmark_methodology"></a>Benchmark methodology</h4> |
| <div class="sect4"> |
| <h5 id="_benchmark_tool"><a class="anchor" href="#_benchmark_tool"></a>Benchmark tool</h5> |
| <div class="paragraph"> |
| <p>We use <a href="https://cassandra.apache.org/doc/latest/cassandra/tools/cassandra_stress.html">cassandra-stress tool</a> - an official |
| tool of Cassandra for stress loading tests.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The cassandra-stress tool is a Java-based stress testing utility for basic benchmarking and load testing a Cassandra cluster. |
| Data modeling choices can greatly affect application performance. Significant load testing over several trials is the best method for discovering issues with a particular data model. The cassandra-stress tool is an effective tool for populating a cluster and stress testing CQL tables and queries. Use cassandra-stress to:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Quickly determine how a schema performs.</p> |
| </li> |
| <li> |
| <p>Understand how your database scales.</p> |
| </li> |
| <li> |
| <p>Optimize your data model and settings.</p> |
| </li> |
| <li> |
| <p>Determine production capacity.</p> |
| </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>There are several operation types:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>write-only, read-only, and mixed workloads of standard data</p> |
| </li> |
| <li> |
| <p>write-only and read-only workloads for counter columns</p> |
| </li> |
| <li> |
| <p>user configured workloads, running custom queries on custom schemas</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect4"> |
| <h5 id="_how_to_benchmark"><a class="anchor" href="#_how_to_benchmark"></a>How to benchmark</h5> |
| <div class="paragraph"> |
| <p>Here we are using a simple case to test and compare Cassandra performance between different setup environments.</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-yaml hljs" data-lang="yaml">keyspace: stresscql |
| |
| keyspace_definition: | |
| CREATE KEYSPACE stresscql WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3}; |
| |
| table: mixed_workload |
| |
| table_definition: | |
| CREATE TABLE mixed_workload ( |
| key uuid PRIMARY KEY, |
| a blob, |
| b blob |
| ) WITH COMPACT STORAGE |
| |
| columnspec: |
| - name: a |
| size: uniform(1..10000) |
| - name: b |
| size: uniform(1..100000) |
| |
| insert: |
| partitions: fixed(1) |
| |
| queries: |
| read: |
| cql: select * from mixed_workload where key = ? |
| fields: samerow</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Create the yaml file as above and copy to a Cassandra node.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Insert some sample data:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">cassandra-stress user profile=mixed_workload.yml n=100000 "ops(insert=1)" cl=ONE -mode native cql3 user=<user> password=<password> -node <IP> -rate threads=8 -graph file=./graph_insert.xml title=Benchmark revision=insert_ONE</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Read intensive scenario:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">cassandra-stress user profile=mixed_workload.yml n=100000 "ops(insert=1,read=4)" cl=ONE -mode native cql3 user=<user> password=<password> -node <IP> -rate threads=8 -graph file=./graph_mixed.xml title=Benchmark revision=mixed_ONE</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>In there:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>n=100000: The number of insert batches, not number of individual insert operations.</p> |
| </li> |
| <li> |
| <p>rate threads=8: The number of concurrent threads. If not specified it will start with 4 threads and increase until server reaches a limit.</p> |
| </li> |
| <li> |
| <p>ops(insert=1,read=4): This will execute insert and read queries in the ratio 1:4.</p> |
| </li> |
| <li> |
| <p>graph: Export results to graph in html format.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_sample_benchmark_result"><a class="anchor" href="#_sample_benchmark_result"></a>Sample benchmark result</h4> |
| <div class="imageblock"> |
| <div class="content"> |
| <img src="../_images/cassandra_stress_test_result_1.png" alt="cassandra stress test result 1"> |
| </div> |
| </div> |
| <div class="imageblock"> |
| <div class="content"> |
| <img src="../_images/cassandra_stress_test_result_2.png" alt="cassandra stress test result 2"> |
| </div> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_references"><a class="anchor" href="#_references"></a>References</h4> |
| <div class="paragraph"> |
| <p><a href="https://www.datastax.com/blog/improved-cassandra-21-stress-tool-benchmark-any-schema-part-1">Datastax - Cassandra stress tool</a></p> |
| </div> |
| <div class="paragraph"> |
| <p><a href="https://www.instaclustr.com/deep-diving-cassandra-stress-part-3-using-yaml-profiles/">Deep Diving cassandra-stress – Part 3 (Using YAML Profiles)</a></p> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_benchmark_opensearch"><a class="anchor" href="#_benchmark_opensearch"></a>Benchmark OpenSearch</h3> |
| <div class="sect3"> |
| <h4 id="_benchmark_methodology_2"><a class="anchor" href="#_benchmark_methodology_2"></a>Benchmark methodology</h4> |
| <div class="sect4"> |
| <h5 id="_benchmark_tool_2"><a class="anchor" href="#_benchmark_tool_2"></a>Benchmark tool</h5> |
| <div class="paragraph"> |
| <p>We use <a href="https://github.com/opensearch-project/opensearch-benchmark">opensearch-benchmark</a> - an official OpenSearch benchmarking tool. |
| It provides the following features:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Automatically create OpenSearch clusters, stress tests them, and delete them.</p> |
| </li> |
| <li> |
| <p>Manage stress testing data and solutions by OpenSearch version.</p> |
| </li> |
| <li> |
| <p>Present stress testing data in a comprehensive way, allowing you to compare and analyze the data of different stress tests and store the data on a particular OpenSearch instance for secondary analysis.</p> |
| </li> |
| <li> |
| <p>Collect Java Virtual Machine (JVM) details, such as memory and garbage collection (GC) data, to locate performance problems.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect4"> |
| <h5 id="_how_to_benchmark_2"><a class="anchor" href="#_how_to_benchmark_2"></a>How to benchmark</h5> |
| <div class="paragraph"> |
| <p>To install the <code>opensearch-benchmark</code> tool, you need Python 3.8+ including pip3 first, then run:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-none hljs">python3 -m pip install opensearch-benchmark</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>If you have any trouble or need more detailed instructions, please look in the <a href="https://github.com/opensearch-project/OpenSearch-Benchmark/blob/main/DEVELOPER_GUIDE.md">detailed installation guide</a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Let’s see which workloads (simulation profiles) that <code>opensearch-benchmark</code> provides: <code><code>opensearch-benchmark list worloads</code></code>. |
| For our James use case, we are interested in <code><code>pmc</code></code> workload: <code><code>Full-text benchmark with academic papers from PMC</code></code>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Run the below script to benchmark against your OpenSearch cluster:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">opensearch-benchmark execute_test --pipeline=benchmark-only --workload=[workload-name] --target-host=[ip_node1:port_node1],[ip_node2:port_node2],[ip_node3:port_node3] --client-options="use_ssl:false,verify_certs:false,basic_auth_user:'[user]',basic_auth_password:'[password]'"</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>In there:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>--pipeline=benchmark-only: benchmark against a running cluster</p> |
| </li> |
| <li> |
| <p>workload-name: the workload you want to benchmark</p> |
| </li> |
| <li> |
| <p>ip:port: OpenSearch Node' socket</p> |
| </li> |
| <li> |
| <p>user/password: OpenSearch authentication credentials</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_sample_benchmark_result_2"><a class="anchor" href="#_sample_benchmark_result_2"></a>Sample benchmark result</h4> |
| <div class="sect4"> |
| <h5 id="_pmc_worload"><a class="anchor" href="#_pmc_worload"></a>PMC worload</h5> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-none hljs">| Metric | Task | Value | Unit | |
| |---------------------------------------------------------------:|------------------------------:|------------:|--------:| |
| | Min Throughput | index-append | 734.63 | docs/s | |
| | Mean Throughput | index-append | 763.16 | docs/s | |
| | Median Throughput | index-append | 746.5 | docs/s | |
| | Max Throughput | index-append | 833.51 | docs/s | |
| | 50th percentile latency | index-append | 4738.57 | ms | |
| | 90th percentile latency | index-append | 8129.1 | ms | |
| | 99th percentile latency | index-append | 11734.5 | ms | |
| | 100th percentile latency | index-append | 14662.9 | ms | |
| | 50th percentile service time | index-append | 4738.57 | ms | |
| | 90th percentile service time | index-append | 8129.1 | ms | |
| | 99th percentile service time | index-append | 11734.5 | ms | |
| | 100th percentile service time | index-append | 14662.9 | ms | |
| | error rate | index-append | 0 | % | |
| | Min Throughput | default | 19.94 | ops/s | |
| | Mean Throughput | default | 19.95 | ops/s | |
| | Median Throughput | default | 19.95 | ops/s | |
| | Max Throughput | default | 19.96 | ops/s | |
| | 50th percentile latency | default | 23.1322 | ms | |
| | 90th percentile latency | default | 25.4129 | ms | |
| | 99th percentile latency | default | 29.1382 | ms | |
| | 100th percentile latency | default | 29.4762 | ms | |
| | 50th percentile service time | default | 21.4895 | ms | |
| | 90th percentile service time | default | 23.589 | ms | |
| | 99th percentile service time | default | 26.6134 | ms | |
| | 100th percentile service time | default | 27.9068 | ms | |
| | error rate | default | 0 | % | |
| | Min Throughput | term | 19.93 | ops/s | |
| | Mean Throughput | term | 19.94 | ops/s | |
| | Median Throughput | term | 19.94 | ops/s | |
| | Max Throughput | term | 19.95 | ops/s | |
| | 50th percentile latency | term | 31.0684 | ms | |
| | 90th percentile latency | term | 34.1419 | ms | |
| | 99th percentile latency | term | 74.7904 | ms | |
| | 100th percentile latency | term | 103.663 | ms | |
| | 50th percentile service time | term | 29.6775 | ms | |
| | 90th percentile service time | term | 32.4288 | ms | |
| | 99th percentile service time | term | 36.013 | ms | |
| | 100th percentile service time | term | 102.193 | ms | |
| | error rate | term | 0 | % | |
| | Min Throughput | phrase | 19.94 | ops/s | |
| | Mean Throughput | phrase | 19.95 | ops/s | |
| | Median Throughput | phrase | 19.95 | ops/s | |
| | Max Throughput | phrase | 19.95 | ops/s | |
| | 50th percentile latency | phrase | 23.0255 | ms | |
| | 90th percentile latency | phrase | 26.1607 | ms | |
| | 99th percentile latency | phrase | 31.2094 | ms | |
| | 100th percentile latency | phrase | 45.5012 | ms | |
| | 50th percentile service time | phrase | 21.5109 | ms | |
| | 90th percentile service time | phrase | 24.4144 | ms | |
| | 99th percentile service time | phrase | 26.1865 | ms | |
| | 100th percentile service time | phrase | 43.5122 | ms | |
| | error rate | phrase | 0 | % | |
| |
| ---------------------------------- |
| [INFO] SUCCESS (took 1772 seconds) |
| ----------------------------------</code></pre> |
| </div> |
| </div> |
| </div> |
| <div class="sect4"> |
| <h5 id="_pmc_custom_workload"><a class="anchor" href="#_pmc_custom_workload"></a>PMC custom workload</h5> |
| <div class="paragraph"> |
| <p>We customized the PMC workload by increasing search throughput target to figure out our OpenSearch cluster limit.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The result is that with 25-30 request/s we have a 99th percentile latency of 1s.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_references_2"><a class="anchor" href="#_references_2"></a>References</h4> |
| <div class="paragraph"> |
| <p>The <code>opensearch-benchmark</code> tool seems to be a fork of the official benchmark tool <a href="https://github.com/elastic/rally">EsRally</a> of Elasticsearch. |
| The <code>opensearch-benchmark</code> tool is not adopted widely yet, so we believe some EsRally references could help as well:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><a href="https://www.alibabacloud.com/blog/esrally-official-stress-testing-tool-for-elasticsearch_597102">esrally: Official Stress Testing Tool for Elasticsearch</a></p> |
| </li> |
| <li> |
| <p><a href="https://esrally.readthedocs.io/en/latest/adding_tracks.html">Create a custom EsRally track</a></p> |
| </li> |
| <li> |
| <p><a href="https://discuss.elastic.co/t/why-the-percentile-latency-is-several-times-more-than-service-time/69630">Why the percentile latency is several times more than service time</a></p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_benchmark_rabbitmq"><a class="anchor" href="#_benchmark_rabbitmq"></a>Benchmark RabbitMQ</h3> |
| <div class="sect3"> |
| <h4 id="_benchmark_methodology_3"><a class="anchor" href="#_benchmark_methodology_3"></a>Benchmark methodology</h4> |
| <div class="sect4"> |
| <h5 id="_benchmark_tool_3"><a class="anchor" href="#_benchmark_tool_3"></a>Benchmark tool</h5> |
| <div class="paragraph"> |
| <p>We use <a href="https://github.com/rabbitmq/rabbitmq-perf-test">rabbitmq-perf-test</a> tool.</p> |
| </div> |
| </div> |
| <div class="sect4"> |
| <h5 id="_how_to_benchmark_3"><a class="anchor" href="#_how_to_benchmark_3"></a>How to benchmark</h5> |
| <div class="paragraph"> |
| <p>Using PerfTestMulti for more friendly:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Provide input scenario from a single file</p> |
| </li> |
| <li> |
| <p>Provide output result as a single file. Can be visualized result file by the chart (graph WebUI)</p> |
| </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>Run a command like below:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">bin/runjava com.rabbitmq.perf.PerfTestMulti [scenario-file] [result-file]</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>In order to visualize result, coping [result-file] to <code><code>/html/examples/[result-file]</code></code>. |
| Start webserver to view graph by the command:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">bin/runjava com.rabbitmq.perf.WebServer</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Then browse: <a href="http://localhost:8080/examples/sample.html" class="bare">http://localhost:8080/examples/sample.html</a></p> |
| </div> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_sample_benchmark_result_3"><a class="anchor" href="#_sample_benchmark_result_3"></a>Sample benchmark result</h4> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Scenario file:</p> |
| </li> |
| </ul> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-none hljs">[{'name': 'consume', 'type': 'simple', |
| 'uri': 'amqp://james:eeN7Auquaeng@localhost:5677', |
| 'params': |
| [{'time-limit': 30, 'producer-count': 2, 'consumer-count': 4}]}]</code></pre> |
| </div> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Result file:</p> |
| </li> |
| </ul> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{ |
| "consume": { |
| "send-bytes-rate": 0, |
| "recv-msg-rate": 4330.225080385852, |
| "avg-latency": 18975254, |
| "send-msg-rate": 455161.3183279743, |
| "recv-bytes-rate": 0, |
| "samples": [{ |
| "elapsed": 15086, |
| "send-bytes-rate": 0, |
| "recv-msg-rate": 0, |
| "send-msg-rate": 0.06628662335940608, |
| "recv-bytes-rate": 0 |
| }, |
| { |
| "elapsed": 16086, |
| "send-bytes-rate": 0, |
| "recv-msg-rate": 1579, |
| "max-latency": 928296, |
| "min-latency": 278765, |
| "avg-latency": 725508, |
| "send-msg-rate": 388994, |
| "recv-bytes-rate": 0 |
| }, |
| { |
| "elapsed": 48184, |
| "send-bytes-rate": 0, |
| "recv-msg-rate": 3768.4918347742555, |
| "max-latency": 32969370, |
| "min-latency": 31852685, |
| "avg-latency": 32385432, |
| "send-msg-rate": 0, |
| "recv-bytes-rate": 0 |
| }, |
| { |
| "elapsed": 49186, |
| "send-bytes-rate": 0, |
| "recv-msg-rate": 4416.167664670658, |
| "max-latency": 33953465, |
| "min-latency": 32854771, |
| "avg-latency": 33373113, |
| "send-msg-rate": 0, |
| "recv-bytes-rate": 0 |
| }] |
| } |
| }</code></pre> |
| </div> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Key result points:</p> |
| </li> |
| </ul> |
| </div> |
| <table class="tableblock frame-all grid-all stretch"> |
| <colgroup> |
| <col style="width: 33.3333%;"> |
| <col style="width: 33.3333%;"> |
| <col style="width: 33.3334%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top">Metrics</th> |
| <th class="tableblock halign-left valign-top">Unit</th> |
| <th class="tableblock halign-left valign-top">Result</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Publisher throughput (the sending rate)</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">messages / second</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">3111</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Consumer throughput (the receiving rate)</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">messages / second</p></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">4404</p></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_benchmark_s3_storage"><a class="anchor" href="#_benchmark_s3_storage"></a>Benchmark S3 storage</h3> |
| <div class="sect3"> |
| <h4 id="_benchmark_methodology_4"><a class="anchor" href="#_benchmark_methodology_4"></a>Benchmark methodology</h4> |
| <div class="sect4"> |
| <h5 id="_benchmark_tool_4"><a class="anchor" href="#_benchmark_tool_4"></a>Benchmark tool</h5> |
| <div class="paragraph"> |
| <p>We use <a href="https://github.com/dvassallo/s3-benchmark">s3-benchmark</a> tool.</p> |
| </div> |
| </div> |
| <div class="sect4"> |
| <h5 id="_how_to_benchmark_4"><a class="anchor" href="#_how_to_benchmark_4"></a>How to benchmark</h5> |
| <div class="olist arabic"> |
| <ol class="arabic"> |
| <li> |
| <p>Make sure you set up appropriate S3 credentials with <code>awscli</code>.</p> |
| </li> |
| <li> |
| <p>If you are using a compatible S3 storage of cloud providers like OVH, you would need to configure |
| <code>awscli-plugin-endpoint</code>. E.g: <a href="https://docs.ovh.com/au/en/storage/getting_started_with_the_swift_S3_API/">Getting started with the OVH Swift S3 API</a></p> |
| </li> |
| <li> |
| <p>Install <code>s3-benchmark</code> tool and run the command:</p> |
| </li> |
| </ol> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">./s3-benchmark -endpoint=[endpoint] -region=[region] -bucket-name=[bucket-name] -payloads-min=[payload-min] -payloads-max=[payload-max] threads-max=[threads-max]</code></pre> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_sample_benchmark_result_4"><a class="anchor" href="#_sample_benchmark_result_4"></a>Sample benchmark result</h4> |
| <div class="paragraph"> |
| <p>We did S3 performance testing with suitable email objects sizes: 4 KB, 128 KB, 1 MB, 8 MB.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Result:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">--- SETUP -------------------------------------------------------------------------------------------------------------------- |
| |
| Uploading 4 KB objects |
| 100% |████████████████████████████████████████| [4s:0s] |
| Uploading 128 KB objects |
| 100% |████████████████████████████████████████| [9s:0s] |
| Uploading 1 MB objects |
| 100% |████████████████████████████████████████| [8s:0s] |
| Uploading 8 MB objects |
| 100% |████████████████████████████████████████| [10s:0s] |
| |
| --- BENCHMARK ---------------------------------------------------------------------------------------------------------------- |
| |
| Download performance with 4 KB objects (b2-30) |
| +-------------------------------------------------------------------------------------------------+ |
| | Time to First Byte (ms) | Time to Last Byte (ms) | |
| +---------+----------------+------------------------------------------------+------------------------------------------------+ |
| | Threads | Throughput | avg min p25 p50 p75 p90 p99 max | avg min p25 p50 p75 p90 p99 max | |
| +---------+----------------+------------------------------------------------+------------------------------------------------+ |
| | 8 | 0.6 MB/s | 36 10 17 22 36 57 233 249 | 37 10 17 22 36 57 233 249 | |
| | 9 | 0.6 MB/s | 30 10 15 21 33 45 82 234 | 30 10 15 21 33 45 83 235 | |
| | 10 | 0.2 MB/s | 55 11 18 22 28 52 248 1075 | 55 11 18 22 28 52 249 1075 | |
| | 11 | 0.3 MB/s | 66 11 18 23 45 233 293 683 | 67 11 19 23 45 233 293 683 | |
| | 12 | 0.6 MB/s | 35 12 19 22 43 55 67 235 | 35 12 19 22 43 56 67 235 | |
| | 13 | 0.2 MB/s | 68 11 19 26 58 79 279 1037 | 68 11 19 26 58 80 279 1037 | |
| | 14 | 0.6 MB/s | 43 17 20 24 52 56 230 236 | 43 17 20 25 52 56 230 236 | |
| | 15 | 0.2 MB/s | 69 11 16 23 50 66 274 1299 | 69 11 16 24 50 66 274 1299 | |
| | 16 | 0.5 MB/s | 52 9 19 31 81 95 228 237 | 53 9 19 31 81 95 229 237 | |
| +---------+----------------+------------------------------------------------+------------------------------------------------+ |
| |
| Download performance with 128 KB objects (b2-30) |
| +-------------------------------------------------------------------------------------------------+ |
| | Time to First Byte (ms) | Time to Last Byte (ms) | |
| +---------+----------------+------------------------------------------------+------------------------------------------------+ |
| | Threads | Throughput | avg min p25 p50 p75 p90 p99 max | avg min p25 p50 p75 p90 p99 max | |
| +---------+----------------+------------------------------------------------+------------------------------------------------+ |
| | 8 | 3.3 MB/s | 71 16 22 28 39 66 232 1768 | 73 16 23 29 43 67 233 1769 | |
| | 9 | 3.6 MB/s | 74 9 19 23 34 58 239 1646 | 75 10 20 24 37 59 240 1647 | |
| | 10 | 2.9 MB/s | 97 16 21 24 48 89 656 2034 | 99 17 21 26 49 92 657 2035 | |
| | 11 | 3.0 MB/s | 100 10 21 26 39 64 1049 2029 | 101 11 21 27 40 65 1050 2030 | |
| | 12 | 3.0 MB/s | 76 12 19 24 44 56 256 2012 | 77 13 20 25 48 69 258 2013 | |
| | 13 | 6.1 MB/s | 73 10 13 20 43 223 505 1026 | 74 10 15 21 43 224 506 1027 | |
| | 14 | 5.5 MB/s | 81 11 15 23 51 240 666 1060 | 82 12 16 23 54 241 667 1060 | |
| | 15 | 2.7 MB/s | 80 10 19 28 43 59 234 2222 | 84 11 25 34 47 60 236 2224 | |
| | 16 | 18.6 MB/s | 58 10 19 26 61 224 248 266 | 61 10 22 29 65 224 249 267 | |
| +---------+----------------+------------------------------------------------+------------------------------------------------+ |
| |
| Download performance with 1 MB objects (b2-30) |
| +-------------------------------------------------------------------------------------------------+ |
| | Time to First Byte (ms) | Time to Last Byte (ms) | |
| +---------+----------------+------------------------------------------------+------------------------------------------------+ |
| | Threads | Throughput | avg min p25 p50 p75 p90 p99 max | avg min p25 p50 p75 p90 p99 max | |
| +---------+----------------+------------------------------------------------+------------------------------------------------+ |
| | 8 | 56.4 MB/s | 41 12 26 34 43 57 94 235 | 136 30 69 100 161 284 345 396 | |
| | 9 | 55.2 MB/s | 53 19 32 39 50 69 238 247 | 149 26 84 117 164 245 324 655 | |
| | 10 | 33.9 MB/s | 74 17 27 37 50 77 456 1060 | 177 29 97 134 205 273 484 1076 | |
| | 11 | 57.3 MB/s | 56 26 35 44 57 71 251 298 | 185 40 93 129 216 329 546 871 | |
| | 12 | 37.7 MB/s | 66 21 33 43 58 73 102 1024 | 202 24 81 125 205 427 839 1222 | |
| | 13 | 57.6 MB/s | 59 24 35 40 58 71 275 289 | 215 40 94 181 288 393 500 674 | |
| | 14 | 47.1 MB/s | 73 18 46 56 66 75 475 519 | 229 30 116 221 272 441 603 686 | |
| | 15 | 58.2 MB/s | 65 11 40 51 63 75 260 294 | 243 29 132 174 265 485 831 849 | |
| | 16 | 23.1 MB/s | 96 14 46 55 62 80 124 2022 | 278 31 124 187 249 634 827 2028 | |
| +---------+----------------+------------------------------------------------+------------------------------------------------+ |
| |
| Download performance with 8 MB objects (b2-30) |
| +-------------------------------------------------------------------------------------------------+ |
| | Time to First Byte (ms) | Time to Last Byte (ms) | |
| +---------+----------------+------------------------------------------------+------------------------------------------------+ |
| | Threads | Throughput | avg min p25 p50 p75 p90 p99 max | avg min p25 p50 p75 p90 p99 max | |
| +---------+----------------+------------------------------------------------+------------------------------------------------+ |
| | 8 | 58.4 MB/s | 88 35 65 79 88 96 288 307 | 1063 458 564 759 928 1151 4967 6841 | |
| | 9 | 50.4 MB/s | 137 32 52 69 145 286 509 1404 | 1212 160 471 581 1720 2873 3744 4871 | |
| | 10 | 58.2 MB/s | 77 46 54 66 77 98 275 285 | 1319 377 432 962 1264 3232 4266 6151 | |
| | 11 | 58.4 MB/s | 97 32 63 72 80 91 323 707 | 1429 325 593 722 1648 3020 6172 6370 | |
| | 12 | 58.5 MB/s | 108 26 65 81 91 261 301 519 | 1569 472 696 1101 1915 3175 4066 5110 | |
| | 13 | 56.1 MB/s | 115 35 69 83 93 125 329 1092 | 1712 458 801 1165 2354 3559 3865 5945 | |
| | 14 | 58.6 MB/s | 103 26 70 78 88 112 309 656 | 1807 789 999 1269 1998 3258 5201 6651 | |
| | 15 | 58.3 MB/s | 113 31 55 67 79 134 276 1490 | 1947 497 1081 1756 2730 3557 3799 3974 | |
| | 16 | 58.0 MB/s | 99 35 67 79 96 146 282 513 | 2091 531 882 1136 2161 6034 6686 6702 | |
| +---------+----------------+------------------------------------------------+------------------------------------------------+</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>We believe that the actual OVH Swift S3' throughput should be at least about 100 MB/s. This was not fully achieved due to |
| network limitations of the client machine performing the benchmark.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </article> |
| </div> |
| </main> |
| </div> |
| <footer class="footer"> |
| <p>This page was built using the Antora default UI.</p> |
| <p>The source code for this UI is licensed under the terms of the MPL-2.0 license.</p> |
| </footer> |
| <script id="site-script" src="../../../_/js/site.js" data-ui-root-path="../../../_"></script> |
| <script async src="../../../_/js/vendor/highlight.js"></script> |
| </body> |
| </html> |