Powerful Google developer tools for immediate impact! (2023-24 C)
Q&A-MongoDB Performance Benchmark using SandStorm
1. Webinar: MongoDB Performance Benchmark Using SandStorm
recording available here
Questions and Answers from March 28, 2014 session
Q. Can I use SandStorm as a pure data loader for MongoDB? The CRUD operations will be
performed by my Application.
A. SandStorm can be used as a data loader for your MongoDB. To do so, one has to create a
test script with the correct JSON to perform a “write” operation on your database. You can
read the data from a CSV file or you may write your own regular expression to parameterize
the variables in your JSON at run time. Once this is done, you may assign the script to
multiple virtual users through the controller and execute the scenario to populate the data.
The SandStorm analyzer would give you details on the through put of data ingestion and
other reports.
Q. Is it possible to monitor each node in the cluster deployment using your integrated
resource monitoring feature? Does this feature also allow monitoring a particular process?
A. It is possible to monitor each node in your cluster with the integrated resource
monitoring feature. The user needs to have administrator rights on each of these nodes, and
in case of Linux nodes, it is mandatory to have the daemon- RSTATD to be up and running.
Q. Does SandStorm generates load with all type of operations and provide all kind of
characteristics?
A. SandStorm helps to generate load on your application in various ways. If you have a GUI
in place, SandStorm helps you to record your use cases and generate load on the application
in form of get/post requests. If you have web-services ready, but not the GUI, SandStorm
still would be able to help in generating the load using directly the web services. If you want
to load test your database by executing queries against it, SandStorm allows you to execute
them on most of the popular databases- commercial or open source.
With specific transactions on database, which falls under the CRUD umbrella (Create, Read,
Update, Delete), SandStorm supports execution of JSON objects that are required to be
executed to insert/update/read data to/from MongoDB.
SandStorm can help you predict your application and DB performance with its Integrated
Resource Monitoring feature. This feature not only gives you details about system health in
terms of CPU/Memory/Network utilization, but also gives you specific counters related to
most of the popular application/web/db servers. To name a few, we provide support to
monitor specific MongoDB counters like read%, Write%, deadlocks, etc.
2. Q. If a load balancer is not in place, can I still design a scenario such that it sends
distributed load to all the nodes in my deployment? Can I configure the distribution?
A. This is definitely possible. When you design a scenario using the SandStorm Controller,
you have an option of creating various groups of virtual users. Each group can be
independently assigned a test case that can be executed on a particular node. If you can
recall, we used a “Cluster Configuration” when we were talking about the SandStorm
recorder. This feature would allow us to send the requests to a particular node. You may
also create multiple copies of test cases which in turn send requests to different nodes.
Q. How can I design test scenarios simulating realistic load in terms of query operations
per sec using SandStorm?
A. SandStorm supports all types of query operations on MongoDB, CRUD operations being
most popular. In order to design a scenario which simulate realistic load in terms of query
operations per second, first you need to create the scripts to perform each of these
operations. After suitable parameterization, you need to execute each of these queries
individually to determine the execution time for it. Once you have the execution time for all
the queries, now you can do a workload modeling with the combination of these queries.
And the same workload can then be simulated using the scenario design from SandStorm
controller.
Alternatively you can also use the Goal Oriented scenarios supported by SandStorm
Controller to define your goals on transaction per second, response time, resource
consumption and others.
Q. Which are the important MongoDB parameters that I should monitor? Do I need to
make any configuration changes in MongoDB to allow SandStorm to monitor?
A. The critical database parameters one should monitor are-
Connections- Total, Available, total created
Cursors- Total Open
Commits
Global Locks
Index counters like- hits, misses, reset
Locks
Network bytes
Op Counters like- Insert, read, update, delete
Record stats like- Page faults exceptions, accesses not in memory, etc.
Redo size/sec
Logical reads/sec
3. Block changes/sec
Physical reads/writes
User calls/parses
Logons, executes, Transactions/sec, Table scan, Locks acquired/sec, etc.
One may choose the counters based on the specific requirements.
You do not have to make any configuration changes in MongoDB to allow the SandStorm
monitors. Only requirement is that you should have a valid database username, password,
IP address and the port to connect to it.
Q. You mentioned about cloud edition of SandStorm. Can I use that edition for MongoDB
testing? If yes, how I can do that?
A. Sure, you can use the SandStorm Cloud edition for Mongo DB testing. You may create the
scripts from the SandStorm recorder and parameterize and validate them. One this is
completed, you may upload these scripts to the SandStorm cloud portal. To get a SandStorm
portal account, you need to register to SandStorm cloud portal link which is available on our
web-site. Once all your scripts are on the portal, you may create the load test scenarios on
the portal itself and chose the load generator machines from the available regions. We
make use of Amazon EC2 services, thus load can be generated from multiple geographies
across the globe.