Digitalocean 512 MB server performance serving WordPress
I have previously posted about the digitalocean VPS hosting. Here are some details on a performance test I just did.
Just for thesting the server I set it up with nginx+php_fpm+mysql. I used a custom set-up droplet with 32bit Ubuntu – 32bits will probably give you better low-ram preformance. I installed WordPress on it with some demo content. Also a few WordPress plugins were installed to give it a real wordpress site appearance. Note that some plugins (or too much plugins) may significantly slow down your site.
There are several other things running on the VPS (mail, owncloud, webmin, firewall, ssh), however they should not affect the timing too much.
Please note that different configurations of the server may lead to significantly different load times.
http://www.webpagetest.org was used for testing the speed of the site. PureLoad Crawler was used to make some background traffic while the speed test was performed. Crawler was used on a machine with limited bandwidth, around 350 wordpress php (550 total requests) urls were crawled in around 2 minutes. The crawler doesn’t work as a normal web user would, but most heavy load on the server should be from php requests being processed.
Page load time (time to load all the page parts and display it in browser) as measured by webpagetest was about 3 seconds with most evident delay being the processing and loading of the page content. Processing of main page content (index.php) took more than 500ms, other loading times were much quicker and probably can’t be optimised much further. Nginx excells at the speed with which it loads static content.
With such loading speed the server will be capable of serving about 2 users per second or around 172k users per day. If you look at this number you will probably get away just ok if your site has less than 20k pageviews per day, provided your pageviews will be more or less evenly dispersed throughout the day.
The RAM usage of droplet was arond 190MB for the whole test. As the crawler set in the processor got up to 90% and more, so processing power is probably the limiting factor in my scenario. In my scenario there were only three active users on the site – crawler, the benchmark test and me clicking around the page to see if I could notice any speed impairment caused by the crawler (which I didn’t). With more concurrent users the memory usage may change.
Same test After switching on the WP Super Cache plugin, set up with PHP caching engine. This significantly offloads processing from the server. Even better solution (but harder to set up properly) would be to let nginx do the caching, which would eliminate the PHP processor from the cached elements altogether.
The crawler doesn’t seem to significally increase its loading speed, but that’s probably because its limitation is the bandwidth limit not the server response time. Total page load time benchmark decreased to 2.5 seconds. The processing of main page content took less than 40ms which is a great achievement in page load speed optimisation. Higher processing speed also means that the server processor loading is slightly lower 🙂
Of course if you are looking into hosting a high-volume web site on minimal hardware you should take some time to fine-tune your setup and set up some performance monitoring for the server 😉
The page load times on the VPS are comparable or slightly better than those I get from the web host of rei-labs.net blog (which is on shared web hosting plan).