WiredTiger on Compose Performance

We’ve used Compose for a number of Meteor apps over the last 2 years. It’s been simple and reliable. Recently, we decided to test one of our apps using WiredTiger storage engine on Compose. We spun up a dev server, imported the data, and ran some tests. Everything was fine except for performance.

On our classic Mongo 2.6 deployment, we have 200 MB RAM and 2 GB storage with ~1.5 GB data. The WiredTiger engine compressed the data to 333 MB and was running with 1 GB RAM. We confirmed all indexes were working, oplog was on, etc.

After running multiple performance tests, we determined that there was a significantly more latency coming from the DB with both fetching data, and making writes with the Mongo 3.2 WT setup. An email from Compose asking for advice on something we had done incorrectly in the setup prompted this response:

“Ah, we just now noticed that the new deployment is the minimum sized WiredTiger deployment. A move to WT is typically a step back in performance for most data sets and workloads, unless a ton of RAM is thrown at it, and even then there are some workloads that are just never going to see much of a speed increase at all.”

So, I wanted to start this topic as I could not find similar experiences on the meteor forums from other developers. Has anyone else noticed a decrease in performance after doing a migration to 3.2 WT? If so, were there any steps you took to fix it? Any thoughts around why this might be happening to us? Everything we read (and we are not DB engineers so we have surface level knowledge on this topic), including posts written by Compose, suggests there should be a performance pickup for most workloads with WT… wanted to open this up to the community to hear other thoughts/ experiences to see if we are missing something.

Thank you all for your input!

5 Likes

We did some in-house tests when WT first became available and came up with the same observations - we found WT to be slightly slower, but with a smaller disk footprint.

1 Like

I’d be really interested to hear more people’s experiences with this. We’ve been looking at moving over to Mongo Atlas and I believe it only allows WT. Min spec does have 2GB RAM though. I had imagined that going from 200MB RAM to 2GB would be a nice boost in performance.

Also wanting to hear more opinions on this as we will release our app in a month and currently figuring out which storage engine to start with. We are looking into having lots of write operations to our database.

Any updates here? I’m interested in the document level locking it provides.

Using Galaxy + Mongo Atlas and everything is working nicely with WT :slight_smile:

What size machine are you using on Atlas?

The first production ready option they have starts at $400 per month.

Elie

On production I think i have M30 server for around $160 / month (8gb ram, hourly backups, 40gb storage, replica sets). That’s more than enough for most production environments.

Are you looking at some other pricing table as for $400 month you can get pretty beast server on Atlas compared to compose / mLab? https://www.mongodb.com/cloud/atlas/pricing pricing on Atlas also starts from around $50 for that server with 2gb ram.

Sorry. It probably was 160 for their m30 then. Maybe their highest speed
m30 was 400 then.

Do you need to start with m30? At the moment I’m paying about half that on
compose.

You can start with their cheapest that is around $50. That Atlas server is even faster than the cheapest $150 server that compose offers (with wiredtiger) and should work well for most environments. I’ve only picked faster server on production just to be sure my db won’t throttle even with very, very high amount of connections.

Why do you have a high number of connections to the db? How many instances
of meteor are you running?

And how do you know that m10 is faster than compose with wired Tiger?

I’m just keeping the server spec high “just in case”. I’m developing an learning analytics platform and at times we need to recalculate high amount of data, which can take tens of seconds and I don’t want to have the db to throttle at any time :slight_smile:

Server specs and pricing you can check from compose and Atlas and compare both to each other, they are both publicly available :slight_smile: on Atlas you have much more options also available if your app gets popular, Atlas allows sharding and scaling your iops values to crazy amount like 20 000 second. You can configure these settings individually for your Atlas server and scale with just a single click.

Only con I’ve had with Atlas is customer service compared to other services. I’ve tried asking basic questions from Atlas customer support but they require me to subscribe for their pro support plan to ask any technical questions, which is quite ridiculous. On compose I had incredible good customer service.

Thanks for that info. That would be annoying losing customer support by
switching over.

Can you point me to the page on compose that shows the specs for their
servers. I wasn’t able to find it while searching.

@kulttuuri, I don’t know any experience with Mongo Hosting.
Now I used MUP to deploy on DigitalOcean/Linode for all (App/DB).
Excuse me, this price for one database name only or could create more then one???

On production I think i have M30 server for around $160 / month (8gb ram, hourly backups, 40gb storage, replica sets)