partner webinar: mongodb and softlayer on bare metal: stability, performance, and control
DESCRIPTION
There are no shortage of options when it comes to infrastructure and where someone deploys a MongoDB based application. We will discuss the advantages of deploying MongoDB on bare metal, presenting actual performance tests of MongoDB on SoftLayer’s on-demand dedicated server cloud infrastructure. We’ll address common concerns like the time investment of deploying complex MongoDB environments, and demonstrate the ease and control provided by the SoftLayer MongoDB Solution Designer.TRANSCRIPT
Performance, Stability & ControlHarold HannonSr. Software Architect, SoftLayer
100k servers
24k customers
23 million domains
13 data centers16 network POPs20Gb fiber interconnects
Global Footprint
• Performance
• Stability
• Control
On the agenda today
The 3 V’s
Test Cases
• Small MongoDB Bare Metal Cloud vs Public Cloud Instance
• Medium MongoDB Bare Metal Cloud vs Public Cloud Instance
SSD and 15K SAS
• Large MongoDB Bare Metal Cloud vs Public Cloud Instance
SSD and 15K SAS
Private Network
JMETER SERVER
JMETER SERVER
JMETER SERVER
JMETER SERVER
RMI
Jmeter Master Client
RDP
Tester’s Local Machine
Test Environment
Beware The “Best Case Test Case”
185817.6 190525.4 187882.2 191101.8 184408.8 188135.4 187080.6 186343.4 191899.6 187736.6 188978.8 187440 186950.4 187623 187783.8 187775.8 192806.8 186643.2
192,806.8 Read Ops/Sec
Do It Yourself
• Data Set Sizing• Document/Object Sizes• Platform• Controlled client or AFAIC• Concurrency• Local or Remote Client• Read/Write Tests
JS Benchmarking Harness
• Available on 10Gen website• Baseline performance tool• benchrun executable• Create javascript test case• Run from mongo command
db.foo.drop();db.foo.insert( { _id : 1 } )
ops = [{op: "findOne", ns: "test.foo", query: {_id: 1}}, {op: "update", ns: "test.foo", query: {_id: 1}, update: {$inc: {x: 1}}}]
for ( var x = 1; x <= 128; x *= 2) { res = benchRun( { parallel : x , seconds : 5 , ops : ops } ); print( "threads: " + x + "\t queries/sec: " + res.query );}
Quick Example
hostThe hostname of the machine mongod is running on (defaults to localhost).usernameThe username to use when authenticating to mongod (only use if running with auth).passwordThe password to use when authenticating to mongod (only use if running with auth).dbThe database to authenticate to (only necessary if running with auth).opsA list of objects describing the operations to run (documented below).parallelThe number of threads to run (defaults to single thread).secondsThe amount of time to run the tests for (defaults to one second).
Options
nsThe namespace of the collection you are running the operation on, should be of the form "db.collection".opThe type of operation can be "findOne", "insert", "update", "remove", "createIndex", "dropIndex" or "command".queryThe query object to use when querying or updating documents.updateThe update object (same as 2nd argument of update() function).docThe document to insert into the database (only for insert and remove).safeboolean specifying whether to use safe writes (only for update and insert).
Options
{ "#RAND_INT" : [ min , max , <multiplier> ] }[ 0 , 10 , 4 ] would produce random numbers between 0 and 10 and then multiply by 4.
{ "#RAND_STRING" : [ length ] }[ 3 ] would produce a string of 3 random characters.
var complexDoc3 = { info: "#RAND_STRING": [30] } }
var complexDoc3 = { info: { inner_field: { "#RAND_STRING": [30] } } }
Dynamic Values
Lots of them here:
https://github.com/mongodb/mongo/tree/master/jstests
Example Scripts
Read Only Test
• Random document size < 4k (mostly 1k)• 6GB Working Data Set Size• Random read only • 10 second per query set execution• Exponentially increasing concurrent clients from 1-128• 48 Hour Test Run• RAID10 4 SSD drives• Local Client• “Pre-warmed cache”
The ResultsConcurrent Clients Avg Read
OPS/Sec
1 38288.5272 72103.357964 127451.88678 180798.439616 191817.336132 186429.451764 187011.7824128 188187.0704
Performance
Small Test
Small MongoDB ServerSingle 4-core Intel 1270 CPU64-bit CentOS8GB RAM2 x 500GB SATAII – RAID11Gb Network
Virtual Provider Instance4 Virtual Compute Units64-bit CentOS7.5GB RAM2 x 500GB Network Storage – RAID11Gb Network
Tests PerformedSmall Data Set (8GB of .5mb documents)200 iterations of 6:1 query-to-update operationsConcurrent client connections exponentially increased from 1 to 32Test duration spanned 48 hours
Small Test
Read Operations per Second by Concurrent Client
1 Client 2 Clients 4 Clients 8 Clients 16 Clients 32 Clients0
200
400
600
800
1000
1200
1400
1600
Virtual Provider AVG SoftLayer AVG Virtual Provider Peak SoftLayer Peak
Write Operations per Second by Concurrent Client
Small Test
1 Client 2 Clients 4 Clients 8 Clients 16 Clients 32 Clients0
200
400
600
800
1000
1200
1400
1600
Virtual Provider AVG SoftLayer AVG Virtual Provider Peak SoftLayer Peak
Medium Test
Medium MongoDB ServerDual 6-core Intel 5670 CPUs64-bit CentOS36GB RAM2 x 64GB SSD – RAID1 (Journal Mount)4 x 300GB 15K SAS – RAID10 (Data Mount)1Gb Network – Bonded
Virtual Provider Instance26 Virtual Compute Units64-bit CentOS30GB RAM2 x 64GB Network Storage – RAID1 (Journal Mount)4 x 300GB Network Storage – RAID10 (Data Mount)1Gb Network
Tests PerformedSmall Data Set (32GB of .5mb documents)200 iterations of 6:1 query-to-update operationsConcurrent client connections exponentially increased from 1 to 128Test duration spanned 48 hours
Medium Test 15k SAS
Read Operations per Second by Concurrent Client
1 Client 2 Clients 4 Clients 8 Clients 16 Clients 32 Clients 64 Clients 128 Clients0
1000
2000
3000
4000
5000
6000
7000
Virtual Provider AVG SoftLayer AVG Virtual Provider Peak SoftLayer Peak
Medium Test 15k SAS
Write Operations per Second by Concurrent Client
1 Client 2 Clients 4 Clients 8 Clients 16 Clients 32 Clients 64 Clients 128 Clients0
1000
2000
3000
4000
5000
6000
7000
Virtual Provider AVG SoftLayer AVG Virtual Provider Peak SoftLayer Peak
Medium Test SSD
Read Operations per Second by Concurrent Client
1 Client 2 Clients 4 Clients 8 Clients 16 Clients 32 Clients 64 Clients 128 Clients0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
Virtual Provider AVG SoftLayer AVG Virtual Provider Peak SoftLayer Peak
Medium Test SSD
Write Operations per Second by Concurrent Client
1 Client 2 Clients 4 Clients 8 Clients 16 Clients 32 Clients 64 Clients 128 Clients0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
Virtual Provider AVG SoftLayer AVG Virtual Provider Peak SoftLayer Peak
Large Test
Large MongoDB ServerDual 8-core Intel E5-2620 CPUs64-bit CentOS128GB RAM2 x 64GB SSD – RAID1 (Journal Mount)6 x 600GB 15K SAS – RAID10 (Data Mount)1Gb Network – Bonded
Virtual Provider Instance26 Virtual Compute Units64-bit CentOS64GB RAM (Maximum available on this provider)2 x 64GB Network Storage – RAID1 (Journal Mount)6 x 600GB Network Storage – RAID10 (Data Mount)1Gb Network
Tests PerformedSmall Data Set (64GB of .5mb documents)200 iterations of 6:1 query-to-update operationsConcurrent client connections exponentially increased from 1 to 128Test duration spanned 48 hours
Large Test 15k SAS
Read Operations per Second by Concurrent Client
1 Client 2 Clients 4 Clients 8 Clients 16 Clients 32 Clients 64 Clients 128 Clients0
1000
2000
3000
4000
5000
6000
7000
Virtual Provider AVG SoftLayer AVG Virtual Provider Peak SoftLayer Peak
Large Test 15k SAS
Write Operations per Second by Concurrent Client
1 Client 2 Clients 4 Clients 8 Clients 16 Clients 32 Clients 64 Clients 128 Clients0
1000
2000
3000
4000
5000
6000
7000
Virtual Provider AVG SoftLayer AVG Virtual Provider Peak SoftLayer Peak
Large Test SSD
Read Operations per Second by Concurrent Client
1 Client 2 Clients 4 Clients 8 Clients 16 Clients 32 Clients 64 Clients 128 Clients0
1000
2000
3000
4000
5000
6000
Virtual Provider AVG SoftLayer AVG Virtual Provider Peak SoftLayer Peak
Large Test SSD
Write Operations per Second by Concurrent Client
1 Client 2 Clients 4 Clients 8 Clients 16 Clients 32 Clients 64 Clients 128 Clients0
1000
2000
3000
4000
5000
6000
Virtual Provider AVG SoftLayer AVG Virtual Provider Peak SoftLayer Peak
Superior Performance
Small SATA II Medium 15k SAS Medium SSD Large 15k SAS Large SSD
70%
133%
297%
111%
446%
Stability
Small Test
Small Bare Metal Cloud Instance64-bit CentOS8GB RAM2 x 500GB SATAII – RAID11Gb Network
Public Cloud Instance4 Virtual Compute Units64-bit CentOS7.5GB RAM2 x 500GB Network Storage – RAID11Gb Network
Tests PerformedData Set (8GB of .5mb documents)200 iterations of 6:1 query-to-update operationsConcurrent client connections exponentially increased from 1 to 32Test duration spanned 48 hours
1 2 4 8 16 320
200
400
600
800
1000
1200
1400
Concurrent Clients
Op
s/S
eco
nd
Small Public Cloud
1 2 4 8 16 320
200
400
600
800
1000
1200
1400
1600
Concurrent Clients
Op
s/S
eco
nd
Small Bare Metal
Medium TestBare Metal Cloud InstanceDual 6-core Intel 5670 CPUs64-bit CentOS36GB RAM2 x 64GB SSD – RAID1 (Journal Mount)4 x 300GB 15K SAS – RAID10 (Data Mount)4 x 400GB SSD– RAID10 (Data Mount)1Gb Network – Bonded
Public Cloud Instance26 Virtual Compute Units64-bit CentOS30GB RAM2 x 64GB Network Storage – RAID1 (Journal Mount)4 x 300GB Network Storage – RAID10 (Data Mount)4 x 400GB Network Storage – RAID10 (Data Mount)1Gb Network
Tests PerformedData Set (32GB of .5mb documents)200 iterations of 6:1 query-to-update operationsConcurrent client connections exponentially increased from 1 to 128Test duration spanned 48 hours
1 2 4 8 16 32 64 1280
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
Concurrent Clients
Op
s/S
eco
nd
Medium Public Cloud
1 2 4 8 16 32 64 1280
1000
2000
3000
4000
5000
6000
7000
8000
Concurrent Clients
Op
s/S
eco
nd
15k SAS
Medium Bare Metal
1 2 4 8 16 32 64 1280
500
1000
1500
2000
2500
3000
3500
4000
4500
Concurrent Clients
Op
s/S
eco
nd
SSD
Medium Bare Metal
Large TestBare Metal Cloud InstanceDual 8-core Intel E5-2620 CPUs64-bit CentOS128GB RAM2 x 64GB SSD – RAID1 (Journal Mount)6 x 600GB 15K SAS – RAID10 (Data Mount)6 x 400GB SSD – RAID10 (Data Mount)1Gb Network – Bonded
Public Cloud Instance26 Virtual Compute Units64-bit CentOS64GB RAM (Maximum available on this provider)2 x 64GB Network Storage – RAID1 (Journal Mount)6 x 400GB Network Storage – RAID10 (Data Mount)6 x 600GB Network Storage – RAID10 (Data Mount)1Gb Network
Tests PerformedData Set (64GB of .5mb documents)200 iterations of 6:1 query-to-update operationsConcurrent client connections exponentially increased from 1 to 128Test duration spanned 48 hours
1 2 4 8 16 32 64 1280
1000
2000
3000
4000
5000
6000
Concurrent Clients
Op
s/S
eco
nd
Large Public Cloud
1 2 4 8 16 32 64 1280
1000
2000
3000
4000
5000
6000
7000
Concurrent Clients
Op
s/S
eco
nd
15k SAS
Large Bare Metal
1 2 4 8 16 32 64 1280
1000
2000
3000
4000
5000
6000
SSD
Concurrent Clients
Op
s/S
eco
nd
Large Bare Metal
Consistent Performance
Small Medium Large
36%
43%
93%
9% 8% 9%
Virtual Instance
Bare Metal Instances
Control
The Dream
Virtual Instance
Striped Network Attached Virtual Volumes
The Reality
Cluster
Virtual Instance
Striped Network Attached Virtual Volumes
Virtual Instance
Striped Network Attached Virtual Volumes
Virtual Instance
Striped Network Attached Virtual Volumes
Deployment Complexity
The Solution Designer
Deployment Serenity
Big Data Solutions
• Bare Metal Servers for Better PerformanceYour big data solution can now have the power of bare metal and the ease of the cloud. Our bare-metal servers are all available in real-time with no downtime via our portal or API, so you don’t have to sacrifice agility for performance.
• MongoDB Best PracticesThe configurations have been optimized based on 10gen and SoftLayer’s insight, expertise and experience and provide an idea database environment.
• Full Access and ControlYou get the total access and control of your complete MongoDB solution, including total utilization of your hardware, total say in where your servers and replica sets are deployed, and the ability to further customize it to any specification or requirement.
• Easy Design and ProvisioningOur configuration tool makes it easy to design and deploy complete customized MongoDB architectures.
“We have over two terabytes of raw event data coming in every day ... Struq has been able to process over 95 percent of requests in fewer than 30 milliseconds”
- Aaron McKee CTO, Struq
Customer Feedback
• Bare Metal Cloud can be leveraged to simplify deployments
• Bare Metal has a significant performance superiority/consistency over Public Cloud
• Public Cloud is best suited for Dev/POC or when running data sets in memory only
Summary
www.softlayer.comblog @ http://sftlyr.com/bdperf
More Information