How many visitors a WordPress blog hosted on Vultr 512MB plan can handle with Nginx webserver installed? This performance review benchmarks LEMP setup on a cloud VPS with low-end specs.
This is a simulation test that we calculate and predict to project an actual situation.
*LEMP stands for Linux, Nginx, MySQL/MariaDB, and PHP.
We seek answer for these questions:
- How is Vultr lowest cloud instance plan performance? (hint: unbelievable)
- How is Nginx performance to host a WordPress blog? (hint: superior)
- How good is Nginx to handle web traffic? (hint: best)
Benchmark Test Parameters
We use following configurations and server specs for this benchmark test:
Vultr lowest cloud instance was deployed for the sake of this benchmark test. The specs are as below:
- CPU: 1 Core
- RAM: 512MB
- Bandwidth: 0.50TB
- Storage: 10GB SSD
- Price: $0.005/hour ($3.5/month)
- Provider: Vultr.
Read our review about Vultr and get free $100 credit.
Server specs and performance:
Details of benchmark this result are available at:
Webserver, MySQL, and PHP:
As for webserver, I use Nginx which is a free high-performance webserver, cache, and reverse proxy.
Thanks to WordOps, LEMP deployment would never be easier.
Configs we use:
- Linux: Ubuntu 18.04
- Webserver: Nginx v1.18.0
- MySQL server by MariaDB v10.3.23
- PHP v7.4.7 (php-fpm)
- Default Gzip compression (no Brotli)
- DNS server by third-party DNS hosting (Cloudflare)
WordPress is the most popular publishing framework. We use it for obvious reasons: easy to set up and free. Here are the details:
- WP version 5.4.2
- 46 posts in total (including Hello World)
- All articles have images (except Hello World)
- Premium theme by Contentberg.
- 14 active plugins (Autoptimize, Cache Enabler, Really Simple SSL, WP Cerber, etc).
- Domain: speedy.monster (registered at Namesilo)
- Page tested: Main index page (home page).
Website caching is done by two plugins: Autoptimize and Cache Enabler.
A. Autoptimize configs:
- CSS optimized, aggregated
- HTML code optimized
- Save aggregated script/CSS as static files? Yes
- Lazy-load images? No
- Remove emojis? Yes
- Remove query strings from static resources? Yes
- Combine and preload Google Fonts in head? Yes
B. Cache Enabler configs:
The Cache Enabler plugin is simply activated with no additional configs. Cache Minification option is also disabled because we did it through Autoptimize.
The parameters used to benchmark the performance of WordOps Nginx server are:
- Page load speed – Tools: Pingdom and GTMetrix.
- Time To First Byte (TTFB) – Tools: GTMetrix and KeyCDN
- Number of clients/visitors – Tool: Loader.io free plan
We put screenshot images for every benchmark test. Do not hesitate to click on images to view it larger.
1. Page Load Speed
Pingdom Speed Test
Pingdom ranks our site as Grade A with 93 points. The tested page loads in 500 ms with a total of 39 requests.
Compared to our previous test which was done using VestaCP and was hosted on Upcloud, the page load time is slower. Despite the fact that page size is smaller.
The way we see it, CPU clock speed is the distinguishing factor besides many other factors including themes used and content rendered.
Nevertheless, 500 ms is still fast.
GTmetrix Website Speed Test
Settings we use to perform page load test in GTMetrix:
- Browser: Google Chrome (Desktop)
- Test server region: Vancouver, Canada
- Connection mode: off/default
- Adblock: off
- Onload: off
- Video: off
Page load speed result:
Again, fully loaded time of 2.3s is slower than our previous test. We suspect the theme and content different is the main determinant.
It’s still fast BTW. Real users won’t notice any differences. According to Neil Patel, anything below 3 seconds is still fast. More than 3 seconds will be good, and anything more than 15 seconds is bad.
According to the Waterfall chart, rendering block time is the slowest. The cause could be combination of many factors, not just server specs.
As seen from the response header above, contents are served over HTTP/2.0 protocol and gzip compression (not brotli).
KeyCDN Tools: Website Speed Test
KeyCDN page load speed test shows different result than what GTmetrix shows.
It requires only 343.67 ms which is incredibly fast, even faster than our previous test.
2. Time To First Byte
Time to First Byte (TTFB) is the total amount of time spent to receive the first byte of the response once it has been requested.
The formula is the sum of Redirect duration + Connection duration + Backend duration.
GTmetrix Page Load Timings:
It takes only 283ms for the server to deliver the first byte of the website.
KeyCDN Performance Test:
We use KeyCDN Tools to test the access speed of main homepage index.php file.
The table depicts different performance across different locations. The fastest TTFB is 71.45 ms (New York, US) while the longest one is 819.58 ms (Sydney, Australia).
3. Stress Load Test (Client Requests)
This test simulates a number of clients connecting or accessing the webserver together at some defined amount of time.
We use free service provided by Loader.io by Sendgrid Labs.
The free plan allows us to have a maximum of 10,000 clients per test and 1-minute test duration.
Test #1: 10,000 clients over 1 minute
Clients will be distributed evenly throughout the test duration. The test will answer this question: How does my server perform when 10000 users connect over the course of 1 minute?
Compared to our previous test which was done on Upcloud using VestaCP, WordOps Nginx seems perform better. Response time is lower which is better. The lower the more responsive.
Let’s do the Math:
Given the 10,000 visitors per minute, we can calculate how many visitors would be per day the server by Vultr 512MB plan.
One day equals to 1,440 minutes. Multiply that by 10,000 and we have 14,400,000 visitors/day. That gives you roughly 430 million visitors a month.
Let’s say it a rough estimate. If the real performance can handle half of that number, it is still very impressive.
Test #2: Clients per second over 1 minute
This test simulates a number of clients connecting to the server every second.
The test will answer questions like: How does my server perform when X number of users connect every second over 1 minute period?
That means new users will try to access your every second.
Thus, we can find out the closest number of maximal visitors the server can handle.
If our previous test became sluggish at 350 clients per second and inaccessible at 400 clients per second, we’ll find out how far Nginx-powered WordPress blog can go.
Similar to before, we start the test from 100 clients/sec, then gradually increase by 100 (100, 200, 300, and so on).
What can we see here?
Average response time tell us how fast or slow the server work to response to clients’ requests. The lower the better.
The numbers of this criteria are still low when serving 500 clients/second.
It means at this rate, the server still works smoothly with no single glitch. It becomes slow when serving 700 clients/second.
It becomes sluggish when serving 1000 clients/second.
Comparing the data to previous test (VestaCP, Nginx+Apache, Uplcoud) that becomes sluggish at 350 clients/second, WordOps does perform way better and more stable in handling many requests which translate to visitors.
It’s twice more stable.
The server does not even blip when serving 1000 clients/second. It was sluggish a little bit but it doesn’t throw any error.
Pay attention to the Response Counts.
There is no 400/500 server error, no single connection timeout, and no network error.
We elevated the limit to 1200 clients/sec and here’s the result:
Here’s the server performance when the test was in progress:
We then increased the limit to 1500 clients/sec but it started throwing errors:
See? Even the test was not carried out successfully since the test reached error threshold.
That said, it is safe to say that the limit is between 1200 – 1400 clients/second.
Wait, we haven’t do the math yet!
Take the lowest number this server can still handle clients requests without any slowing down, that is 500 clients/second.
Multiply it by 60 seconds and that equals to 30,000 clients in a minute. One day is 1440 minutes.
30,000 x 1,440 = 43,200,000
Yay, that’s insane! You can have 43.2 million unique visitors per day.
That equals to 1.2 billion UV/month.
That sounds impossible for you.
Ok, let’s say for any unpredictable circumstances, you can achieve only one quarter of that number which is 10 million UV/day.
Doesn’t it still sound incredible?
Vultr lowest pricing offers instances with 512MB RAM and 1 CPU core. The Geekbench score of CPU benchmark is not even half of what available in the 1GB plan (503 vs 2523). However, it uses the same SSD technology and the same networking/connection.
This benchmark test shows us that Nginx (via WordOps) can deliver best stability and reliability.
Nginx webserver plus Php-fpm combination can handle millions unique visitors per day to a WordPress site hosted on a small cloud server.
Compared to our previous test, WordOps (Nginx + Php-fpm) performance is way more superior than VestaCP (Nginx as frontend, Apache as backend, and mod-php).
Upgrade that 512MB RAM and add more CPU cores to the server and you will get not only more visitors but also faster load speed.
So, if you ask: how many visitors Vultr lowest VPS can handle? The answer is millions – assuming you use the same configs as we did.
Lastly, it doesn’t need expensive cloud VPS with high specs to have a powerful Linux server to host a high-traffic website.
Traffic spike from Reddit will no longer be a problem.