EasyWP Performance Review

Graph of EasyWP Authenticated – 500 Users Requests per Second
EasyWP Authenticated – 500 Users Requests per Second

Back in 2019 I became aware of a new player in the managed WordPress hosting space: EasyWP by Namecheap. As a Namecheap customer (domain registrar) I was curious about their entry into this market and gave them a try. When I initially did performance tests, the platform was still very new and it showed. But now its October 2020 and the platform has matured. Let’s dig into the performance

How did we test EasyWP Performance?

To performance test EasyWP we first created an export of this blog and imported it into the WordPress instance that EasyWP stood up for us. After that we ran a series of tests:

  • Authenticated Browsing
    • 50 users, 100 minutes
    • 500 users, 100 minutes
  • Unauthenticated Browsing
    • 200 users, 100 minutes
    • 2000 users, 100 minutes

All tests data generators were distributed in the DigitalOcean data centers in New York City, London, and Singapore.

What do each of these test types mean?

  • Authenticated Browsing – The load test user will authenticate and then browse around the front end of the website. In most cases this causes no caching to happen.
  • Unauthenticated Browsing – The load test user browses around the front end of the website. No login is performed. In most cases this means that we’ll hit cached pages.

EasyWP Authenticated Browsing – 50 Users

The first test we ran was an authenticated browsing test with 50 concurrent users. We used this as our baseline, because we assumed that EasyWP would be able to handle it without any issues.

Graph of EasyWP Authenticated - 50 Users Requests per Second
EasyWP Authenticated – 50 Users Requests per Second

As you can see we settled in at around 40 req/s with few errors. Not bad for un-cached performance.

Graph of EasyWP Authenticated - 50 Users Response Time
EasyWP Authenticated – 50 Users Response Time

Next we look at the average and median response times. With a median just under 200ms, this seemed like fairly good performance for being authenticated and with traffic distributed around the globe.

Graph of EasyWP Authenticated - 50 Users Response Time Distribution
EasyWP Authenticated – 50 Users Response Time Distribution

Finally, we take a look at the response time distribution. With the exception of the 100% outlier, 99% of all requests finished in under 660ms. This is great performance for an authenticated test.

EasyWP Authenticated Browsing – 500 Users

Our next test was the same as the previous test, except we increased the number of concurrent users by an order of magnitude. At this level, I expect things to fail when running the authenticated scenario. WordPress has awful performance without caching and you would need some seriously beefy infrastructure to absorb this number of authenticated requests.

Graph of EasyWP Authenticated – 500 Users Requests per Second
EasyWP Authenticated – 500 Users Requests per Second

As you can see things start off pretty great before going right off the rails. I’m not sure what is happening in the background at EasyWP, but I suspect that the service was scaling up while this test was running, otherwise we would have never made it to > 250 successful requests per second.

Graph of EasyWP Authenticated – 500 Users Response Time
EasyWP Authenticated – 500 Users Response Time

After the initial shock from the traffic volume, the median response time settled in at around 200ms. The average is much higher though, meaning we have some pretty serious outliers. These will likely show up in the response time distribution graph.

Graph of EasyWP Authenticated – 500 Users Response Time Distribution
EasyWP Authenticated – 500 Users Response Time Distribution

Finally we take a look at the response time distribution. Not entirely terrible given the amount of traffic we were throwing at EasyWP. 99% of requests completed in ~6.4 seconds. The outliers here were BIG though which skewed the average response time data.

EasyWP Unauthenticated Browsing – 200 Users

Next we move on to unauthenticated front end browsing. This is the use case that most manged WordPress hosting platforms optimize for (because 99% of traffic falls into this category). Let’s see how EasyWP does.

Graph of EasyWP Unauthenticated – 200 Users Requests per Second
EasyWP Unauthenticated – 200 Users Requests per Second

As expected for the unauthenticated baseline scenario, EasyWP did well. We settled in at around ~160 requests per seconds with very few errors throughout the entire duration of the test.

Graph of EasyWP Unauthenticated – 200 Users Response Time
EasyWP Unauthenticated – 200 Users Response Time

The response time graph looks solid. The median stayed at right around 190ms which is to be expected on a test with load generators spread across the globe. The average is a bit higher, so we probably had some outliers. Lets look at the distribution to see.

Graph of EasyWP Unauthenticated – 200 Users Response Time Distribution
EasyWP Unauthenticated – 200 Users Response Time Distribution

99% of requests finished in 820ms, with the outlier at 100% being 12 seconds. I honestly expected the 99% number to be a bit lower, but it’s still in a fine range for a load test of this size.

EasyWP Unauthenticated Browsing – 2000 Users

Finally we take a look at what happens to performance on EasyWP when we increase the size of the load test by an order of magnitude. Some hosts handle this test fine, others struggle. So let’s get to it.

Graph of EasyWP Unauthenticated – 2000 Users Requests Per Second
EasyWP Unauthenticated – 2000 Users Requests Per Second

EasyWP performed well in this test (ignore the spike, that was a reporting problem). We settled in at around ~1400 requests per second with very few errors. If you do the math, that’s 120M requests per day.

Graph of EasyWP Unauthenticated – 2000 Users Response Time
EasyWP Unauthenticated – 2000 Users Response Time

The performance on the 2000 user test was very similar to the 200 user test, which is great for EasyWP. Normally an order of magnitude increase in users would see a decrease in performance, but EasyWP handled it well.

Graph of EasyWP Unauthenticated – 2000 Users Response Time Distribution
EasyWP Unauthenticated – 2000 Users Response Time Distribution

The response time distribution was also strikingly similar to the 200 user test. The only change is that the 100% outlier is a lot higher, which is to be expected when working at a higher scale.

EasyWP Performance Conclusions

In general the performance of EasyWP was solid, especially considering how cost-effective it is. Is it the fastest WordPress host that we’ve tested? No. But it is in the top 2-3 for managed hosts in the performance per dollar category. EasyWP is definitely worth giving a try.