Engineered MongoDB Installations

The following changes were made to enhance the performance of our Engineered MongoDB installations.  These changes were formulated and implemented with the assistance of 10Gen to give the best possible user experience for customers ordering Engineered Servers.  To this end 10Gen and SoftLayer have selected a variety of Bare Metal servers to serve as the base of the platform.  Bare Metal servers provide a consistent high performance set of available resources that cannot be matched in shared resource, multi tenant platforms.  

CentOS 6.X as the preferred OS – 10Gen has indicated that they have found the best performance and ability to support MongoDB is found on the CentOS operating system.  Therefore under this recommendation, we have chosen to exclusively deploy MongoDB onto a CentOS 6.X platform.

SSD Read Ahead Defaults set to 16 blocks – SSD drives have excellent seek times allowing for shrinking the Read Ahead to 16 blocks while spinning disks might require slight buffering so these have been set to 32 blocks

Noatime -Adding the noatime option eliminates the need for the system to make writes to the file system for files which are simply being read -- or in other words, this means faster file access and less disk wear.

NUMA off in BIOS - Linux, NUMA and MongoDB tend not to work well together. If you are running MongoDB on numa hardware, we recommend turning it off (running with an interleave memory policy). Problems will manifest in strange ways, such as massive slow downs for periods of time or high system cpu time.

Ulimit – We have set the ulimit to 64000 for open files and 32000 for user processes to prevent failures due to a loss of available file handles or user processes

EXT4 – We have selected ext4 over ext3.  We have found ext3 to be very slow in allocating files (or removing them) as well as access within large files is also poor.

Separate Journal Volume – SoftLayer has elected under the advice of 10Gen to have a separate SSD volume mounted for the journal.  This is available on the higher end engineered servers and prevents journaling from interfering with r/w operations on the data mount.

MMS Preinstalled -  MMS is 10Gen’s monitoring service that is provided free of charge for all MongoDB instances.  It is considered a best practice to install MMS, which is why all SoftLayer engineered servers are pre-configured with the MMS agent installed.