Load testing with Meteor

Hi,

We are close to launch our app but we want to benchmark the app with concurrent users. Blitz.io is not accepting new accounts now, at least for some more days or weeks. Any alternative??

If not, any practical suggestion on how to use meteor-down or meteor-load-test?
meteor-down has an issue about not supporting ssl, is it correct?
Also there’re some issues about same origin IP and concurrency limit per instance.

Thanks!

2 Likes

I f you want a more life-like test or just not very fond of scripted load testing (which may or may not represent actual use cases), another option would be to get actual people to do load testing for you.

Mechanical Turk, Fiverr and UpWork are great places to find people to do that for you in exchange for a very small payment.

What’s great is, you can describe your scenarios, divide people in groups, ask them to carry out those scenarios (or ask some to just improvize and experiment), perhaps ask some of the to use multiple tabs, browsers etc.

In the meantime, you would be analyzing your kadira dashboard (especially livequery), server metrics and application logs.

Roughly 100 concurrent users on a single app instance will give you an idea about your app performance and bottlenecks. (If budget is a concern, you can get 100 concurrent users with as little as 20 people using multiple browsers)

1 Like

@alanning are you still working on https://github.com/alanning/meteor-load-test? :slight_smile: It’s just DDP, right? So less relevant for people doing most of their data with Apollo.

1 Like

Here’s a thread I wrote about PhantomJS & WebDriver load testing using www.redline13.com and your own AWS EC2 account:

https://forums.meteor.com/t/poor-galaxy-meteor-performance-serving-small-bursts-of-users-load-test/38671

Thought it might help future Google’rs of this thread.

Hi folks, came across this thread while looking to do exactly this in 2019 / 2020 with a Meteor 1.8 app. Any updates to available methods?

I’ve come across a couple of articles, including @evolross’s take:

Here’s a couple more Meteor load-testing resources I’ve bookmarked over the years. Not sure if they’re still relevant but worth a look. Will be circling back to load-testing again very soon, so please report any success here.

1 Like

Here we are in 2021 and there still isn’t any real definitive tool or guide for perf/load testing.

I’m looking at moving to Galaxy hosting so I’d like to run some load tests w/different container sizes. The Meteor Guide mentions load testing but doesn’t go into any detail or list tools to help.

I know there’s the meteorhacks meteor-down but it doesn’t appear to support logging in w/a username and password and I don’t particularly like having a secret backdoor just for perf testing.

Can anyone here comment on how they’re running their perf tests? Is there some easy turnkey solution or should I just create a bunch of DDP clients and run them concurrently w/a one off script? I know I can spin up a ton of webdriver tests but I’d really like to avoid that if possible.

If any Galaxy staff sees this, how are you helping your customers run perf tests before a production release?

2 Likes

Hi everybody !

I am facing the same issue than you @efrancis , the meteor guide mentions load testing, but there isn’t any recommended tools :confused:

Did you find a way to process your stress test ?

Thank you

On our side we use puppeteer and puppeteer-cluster to simulate real user behavior and trigger them from AWS EC2 instances to test our meteor app.

Works like a charm. We monitor with MontiAPM and could make plenty of improvments in the last months (from 20 concurrent users on pub/sub to more than 300)

2 Likes

I used simple ddp client to do a script of load testing and it works fine. for confidentiality reasons, I cannot share this script but you can build one, it’s not very complicated. You just need before to create many users in your database (I did 1000) with faker and after that, you code the script, including an array of credentials of users before created and then create the multiple connections, after that, implement the sequence of method calls or subscriptions.

1 Like