MongoDB as a caching solution for Drupal 7
MongoDB is a NoSQL database that has Drupal integration for various scenarios.
One of these scenarios is using MongoDB as the caching layer for Drupal.
This article describes what is needed to get MongoDB working as a caching layer for your Drupal site. We assume that you have an Ubuntu Server LTS 14.04 or similar Debian derived distro.
Download The Drupal Module
First, download the MongoDB Drupal module. You do not need to enable any MongoDB modules.
drush @live dl mongodb
Install MongoDB Server, Tools and PHP Integration
Then install MongoDB, and PHP's MongoDB integration. Note that 'mongodb' is a virtual package that installs the mongodb-server package as well as other client tools and utilities:
aptitude install php5-mongo mongodb
Restart PHP
Restart PHP, so that MongoDB integration takes effect:
service php5-fpm restart
Configure Drupal With MongoDB
Now, edit your settings.php file, to add the following:
$conf['mongodb_connections']['default']['host'] = 'mongodb://127.0.0.1';<br>$conf['mongodb_connections']['default']['db'] = 'site1';<br>$conf['cache_backends'][] = 'sites/all/modules/contrib/mongodb/mongodb_cache/mongodb_cache.inc';<br>$conf['cache_default_class'] = 'DrupalMongoDBCache';
Note, that if you have multisite, then using a different 'db' for different sites will prevent cache collision.
Monitoring MongoDB
You can monitor MongoDB using the following commands.
mongotop -v<br>mongostat 15
Tuning MongoDB
Turn off MongoDB's journaling, since we are using MongoDB for transient cache data that can be recreated from Drupal.
Edit the file /etc/mongodb.conf and change journal= to false.
Performance Results
Quick testing on a live site showed that MongoDB performance is acceptable, but not spectacular. That is specially true when compared to other memory resident caching, such as Memcached or Redis.
For example, on the same site and server, with Redis, Time To First Byte (TTFB) is ~ 95 to 105 milliseconds. With MongoDB it is ~ 200, but also goes up to ~350 milliseconds.
Still, MongoDB can be a solution in memory constrained environments, such as smallish VPS's.