Mercury is an open-source effort to create reusable, common, stable, kickass stacks for running Drupal. It began as an effort targeted to Amazon EC2, but really wants to have its stacks run anywhere/everywhere Drupal is found.
The current best place to get code from is this GitHub repository:
https://github.com/boztek/mercury
The ideas here have also spawned Pantheon Systems, which provides commercial service, but this group is about free and open-source DIY server configuration for Drupal.
New Mercury Performance Metrics: Logged-in Users
While Mercury has previously demonstrated the raw power of Varnish to radically accelerate the delivery of cached pages with Pressflow, that's only part of the battle for high performance Drupal. Cached pages need to be generated at least once, and logged in users will be bypassing Varnish when making requests. While it's nice to know you're covered for massive traffic spikes, what about baseline load?
Well, we want to answer that question too. Keep in mind that depending on your module/theme stack, your mileage may vary. A lot. Performance tuning a complex Drupal site for logged-in traffic requires sustained diligence at the application level — code profiling, slow query log review, innovative app-specific caches, etc — as well as hardware and system optimization. However, to set some baseline expectations, we used Jacob Singh's greate starter test suite and checked out a Mercury install on a 512MB Slicehost VPS. The results are quite encouraging.
Read moreMercury 0.71-Beta Released
Mercury 0.71-Beta has been released with small bugfixes (see https://bugs.launchpad.net/projectmercury for details).
AMI IDs are:
US 32-bit: ami-bd7c9fd4 - chapter3-storage/PANTHEON-pressflow-mercury-0.71-Beta.manifest.xml
US 64-bit: ami-b17c9fd8 - chapter3-storage/PANTHEON-pressflow-mercury64-0.71-Beta.manifest.xml
EU 32-bit: ami-8f2c07fb - chapter3-storage-europe/PANTHEON-pressflow-mercury-0.71-Beta.manifest.xml
EU 64-bit: ami-73230807 - chapter3-storage-europe/PANTHEON-pressflow-mercury64-0.71-Beta.manifest.xml
User-Data integration with Project Mercury
I've been working on better integration with EC2 user-data for Project Mercury. The goal is to allow users to specify configuration options when they launch a Mercury instance to simplify the process of manual configuration.
For example if you'd like the EC2 instance to receive an Elastic IP address you'd specify:
IP="new"
Or an existing elastic IP address:
IP="123.123.123.123"
Setting up EBS for Mercury [Beta]
Last updated by jlmeredith on Thu, 2010-11-18 10:32
Once you've followed the steps outlined for installing your site on Mercury you'll then want to take your site to the next level using Elastic Block Store. This is going to keep your MySQL database(s) persistent should your server instance crash. Also make it easy to replicate data for testing etc.
Read moreProject Mercury Beta!
With great pride, and after six alpha-level releases, I'm announcing of our seventh iteration on the Project Mercury stack, finally baked enough to call "beta".
At this point, we know that many people are using the Mercury EC2 image in production environments, and we've tuned this release conservatively to prevent it from breaking down under heavy load. We've also verified that the stack will work under a resource-constrained VPS (e.g. one with 1/4th the RAM of a small EC2 image), which gives us more confident that this configuration is stable. We also have a kickass logo:

Installing Your Drupal Project On Project Mercury
With the release of Project Mercury BETA, I figured it was probably high time I answered the #1 request for documenteation: "how do I put my existing Drupal site onto Mercury?" This wiki has step-by-step instructions for a few ways of handling this. Your mileage may vary of course depending on what all your site does, but this should at the very least give you a good orientation to get started.
Read moreAdditional testing of Mercury with 2GB and 512MB RAM
My name is Greg Coit, sysadmin for Chapter 3 and I've been helping with Mercury development and testing.
We wanted a get a quick idea of how hard we could push mercury under more "real world" circumstances, so I combined siege and ab to generate a broad spectrum of hits. ab (short for apache benchmark and part of the apache2-utils package) allows you to generate a very large number of hits on one url, while siege (a perl script which comes in a self-titled debian/ubuntu package) lets you spread the hits across many urls, most of which won't be cached. This mixed-load is a much more nuanced and accurate way of looking at performance than peak throughput on a single url.
Read moreEC2 Offering "MySQL Cloud"
Today Amazon announced a provided service for hosting MySQL databases in the cloud: Amazon Relational Database Service. It starts at $0.11/hr, plus $0.10 per GB/month of storage and $0.10 per million I/O requests. The real interesting question is how these will perform. The instances come in many flavors:
- Small: 1.7 GB memory, 1 virtual core with 1 ECU. $0.11/hr
- Large: 7.5 GB memory, 2 virtual cores with 2 ECUs each. $0.44/hr
- Extra Large: 15 GB of memory, 4 virtual cores with 2 ECUs each. $0.88/hr
- Double Extra Large: 34 GB of memory, 4 virtual cores with 3,25 ECUs each. $1.55/hr
- Quadruple Extra Large: 68 GB of memory, 8 virtual cores with 3.25 ECUs each. $3.10/hr
That "Quadrupal XL" is pretty big! I'll be investigating this for Pantheon, but anyone else with experience/info, let's figure out how good these things really are!
Read moreInitial Mercury Results From 512MB VPS deploy
Just a heads up; as we move towards more and more stable builds of the Mercury stack, we are starting to look at deploying it on other infrastructure besides EC2. This week, we set it up and tuned for a modest (512MB of ram) VPS. These tests were successful. We were able to simulate a mix of non-cached traffic along side the simple ApacheBench battering, and the system held up well, even without gigabytes of ram to support it.
Read moreMail settings on default mercury
Hi currently when you install mercury you get sendmail as the MTA and I think it's configured to be for local delivery.
I think postfix or my choice - exim are a more fitting (easier to manage and configure).
I don't want to open a holy war but we need an MTA preconfigured to act as an Internet site and not a desktop.
just my 0.02 cents..
Lior
Pantheon Vulcan?
Hi all,
Is anyone using Vulcan? I've installed the EC2 instance, but can't find any documentation on configuration for selenium, hudson, etc. I've used selenium on our other boxes before so I'm familiar with that.
What is packaged into the Vulcan instance? Is the server just a skeleton or are there packages set up already? Is this ready to go or just an instance I'd build manually? What are the advantage to using the Vulcan EC2 instance?
Thanks
Read moreProject Mercury Alpha 6: Now With Solr!
I'm happy to announce the 0.6 Alpha release of the Mercury AMI, now including ApacheSolr as the search backend! This is the last piece of major infrastructure we want to integrate into the stack for scalability purposes. You can now move from a single-server install based on Mercury to a best-practice vertically scaled architecture with separate hardware to run front-end cache, application, back-end cache, search and database!
The quickest way to find it is by searching Amazon EC for "Pantheon" or "Mercury". The manifest path for the latest release (in 32bit and 64 bit flavors) is:
chapter3-storage/PANTHEON-pressflow-mercury-alpha-6.manifest.xmlchapter3-storage/PANTHEON-pressflow-mercury64-alpha-6.2.manifest.xml(back!)
If you'd like to "roll your own" we've updated the wiki instructions page with a new set of instructions for getting Solr up and running as part of the process. Feel free to improve that documentation, as it's definitely a community process.
This will likely be one of the last releases before we move the project into the Beta phase, at which point we'll be focusing on fine tuning and stability as well as portabilty onto non EC2 systems moreso than new features. If you have ideas for additional things you'd like to see integrated in the stack, please chime in. We're also going to be documenting real-world "how to" use-cases — e.g. "how do I put my existing site on Mercury" in user-friendly detail — so stay tuned for that.
As always, let us know what you think of the release, what you'd like to see in future iterations, and how your experience is in using the stack. There's plenty more to come.
Read moreUpdate Pantheon Aegir AMI
Can the maintainers of the pantheon AMIs please update the Aegir AMIs?
I'm quite eager to use it, but would like it to be using the latest version please.
Thanks!
Read moreMercury Update: Beta Coming Soon!
Just wanted to let everyone know we're hard at work on a Beta release of Project Mercury. Currently we are tuning Varnish further, working to package Apache Solr on board as the search backend, and testing the whole system for bugs. We will likely issue one more alpha release (0.6) before we get to a Beta, but I want to have that launch by the end of the month if possible.
The high level road map:
- Package Solr
- Improve default Varnish config
- Thoroughly document "putting your site on mercury"
- Resolve lingering bugs (e.g. cron.php issues)
Once we hit Beta we'll be pushing for wider adoption, which means pursuing alternate non-Amazon hosting options. Currently we're looking at alternate cloud providers, VPS partnerships, and other packaging options like VM images, etc. So stay tuned, and let us know what else you'd like to see us look at including early in the Beta cycle!
Read moreVarnish errors on loaded sites ... Error 503 Service unavailable... Guru Meditation
In certain instances I see the next error (which I remember vagually seeing in drupal.org.il)
Error 503 Service Unavailable
Service Unavailable
Guru Meditation:
XID: 1525473736
From googlin' i understand that this is apache not responding to varnish, Is this correct?
How do I play with the time varnish gives apache to respond?
best regards
Lior
How do you install Drupal?
We're looking into beefing up our automated testing framework, and I'm wondering about how others are doing it. The main sticking point for us is how we actually install Drupal. I know that the economist.com guys have a database import, and then run updates against it, which is how you'd have to test an existing site, and I guess has simplified the problem, but does mean that they never visit install.php and actually do an install. This works for them because they only have one site.
Read moreNew 0.51 Mercury AMIs: Many Fixes and 64bit!
I just wanted to post an announcement that we've finally gotten out a point-update of the Project Mercury AMI. Just in case you were wondering if this project would continue, it will! I've been really excited and encouraged by all the positive feedback so far, so keep your ideas and questions coming. The 0.51-Alpha release includes a number of bugfixes and improvements, most notably it:
- Is based on the latest Pressflow including Drupal Core 6.14 and Simpletest 2.9
- Fixes the self-update process to merge correctly and pull from Pressflow's lovely new VCS home on Launchpad
- Includes the rc1 version of cacherouter
- Fixes postfix and s3 metadata issues so there's now a working MTA out of the box
Most importantly for people considering this stack for production deployments, we're now bundling 64-bit images with every release. The quickest way to find the AMIs is to keyword search for "mercury" in your favorite EC2 console. More information and AMI ids are below the fold. Let me know what you think, and what you'd like to see next!
Read morePANTHEON/Mercury BoF Friday at DrupalCon Paris
Just a quick note: we're going to hold a BoF for people interested in Project Mercury (and other packages from PANTHEON) in Paris! It will be after lunch on Friday at 2:50.
Looking forward to talking to those of you who are here at DrupalCon.
Read moreProject Mercury Benchmarks: 2000+ Requests Per Second!
While working through some issues this weekend and preparing another blog post, I finally got around to doing some comprehensive benchmarking on Project Mercury. In the process, I discovered that the first bottleneck I hit running tests from my desktop was the local (last-mile) internet connection, so I switched to running the tests from another EC2 instance. This means that network is not a factor in my results, giving us a real sense of the raw power behind this stack.
For all these tests, I used the Mercury Alpha4 release on a small ec2 instance, loading a staging copy of Mission Bicycles, which is a good "heavy" example in that it has a lot of modules loaded, including Ubercart and Panels. My goal was to measure throughput and response times under various caching configurations, angling for the best results in terms of pages served per second, and delivery time.
I started by cutting things all the way back to nothing, and then added each layer of the caching infrastructure, running benchmarks at each point. The results are quite eye-opening. Can you say 2000+ requests per second? Read on for the full story.
Read moreStep-by-step: Setting up Project Mercury (Varnish, Apache, APC, Memcached and Solr)
THIS DOCUMENTATION IS DEPRECATED!
Refer to the new wiki for better docs. This page is here for posterity.
Here are step-by-step instructions for building Project Mercury on a fresh server using the configuration manager BCFG2. Project Mercury has been developed on AWS ec2 but should work on Rackspace and many other VPSs. We have public AMIs available of Ubuntu Jaunty versions (in both 32 and 64 bit flavors) - see http://getpantheon.com.
This is a wiki page which I'll will try to keep up to date as the project evolves. Please feel free to comment, add notes, and correct any mistakes you see. For the BCFG2 version of these instructions (and pre-made, ready-to-go AMIs), see http://groups.drupal.org/node/50408
3/2/10: 1.0 updates
1/11/10 Explain how to configure the external caching backend on Drupal.
12/2/09 Mercury 0.81
11/19/09 Mercury 0.8-Beta
11/14/09 Restructured instructions
10/22/09 Configuration file download instructions
10/8/09 Added Apache Solr to the install
9/20/09 Numerous fixes and the new pressflow BZR location





