A couple of months ago I had the chance to talk with WPX co-founder and CTO Georgi Petrov about the update to all hosting plan limits that is taking place today.
Over the years, WPX have performed multiple upgrades behind the scenes. For example, every time the hosting servers went through an upgrade, the new CPU cores would be upwards of 30% more performant than before; the management team would silently tweak the PHP process limits to improve overall service quality; while monitoring site usage data and finding out that a particular site would benefit from more RAM, WPX would increase the amount of RAM available to that customer; same thing would happen if a customer explicitly asked for a bump of memory quota or PHP process limit because of expected periods of heavy traffic or another valid reason.
The difference now is that this is the first significant and orchestrated upgrade that is not applied discretionary; everybody gets the same increased amount of RAM or PHP process limit, along with improvements to CPU usage and a nice bump in available SSD storage space.
At first I thought to start this post with a summary table of all the changes that every WPX customer is getting as a free upgrade to their plan and take it from there but ultimately decided against it.
A simple statement that customers get a free 50% resource bump will miss the mark. These upgrades are not mere edits to some configuration file. The significance of this update deserves to be put in the proper context.
WPX customers know they receive consistently quality service, but the company website is bereft of details about how the hosting platform works under the hood. Over the years, WPX have been very shy talking about the specs of their service.
The system WPX have set up deserves admiration. I will try to make up for years of stubborn reluctance by WPX to boast at least a little about the way their hosting plans are structured. So let’s talk about how SSD storage, RAM limits, and CPU cores play into everything.
Part I: Disk Storage and Bandwidth Increase
The most easily comparable and simple to understand plan limits — disk quota, number of websites, and bandwidth allocation — were determined when the service first started, and have remained unchanged since then.
Disk quota was determined chiefly by the restrictions of the technology available back then. Most people reading this post today probably don’t know it, but back in the day, WPX (then called Traffic Planet Hosting…) was the very first shared web host to launch as a fully SSD-based service.
The decision to go ‘all SSD’ became a major pillar of the constant peak raw performance that WPX users enjoy to this day. However, some 9 years ago, the cost of SSD storage and the choice of enterprise-grade, super-reliable solid-stage disks was much more limited than today, and so was the achievable maximum capacity per device and per server chassis.
Because of these technological limitations, WPX owners Terry Kyle and Georgi Petrov ultimately set disk quotas per tier the way they stood until yesterday: 10GB for the Business Plan, 20GB for the Professional Plan, and 40GB for the Elite Plan.
Free 50% Storage Quota Increase
Nowadays, solid-stage storage costs are of course entirely different. When discussing possible upgrades to the service, it was quite a straightforward decision to increase the storage limits for all plans and all users by 50%.
The free storage increase means that:
- Business Plan users now have access to 15GB of fast SSD storage;
- Professional Plan users see their disk space bumped from 20GB to 30GB;
- Elite Plan users have their disk space limits upped from 40GB to 60GB.
Changes to Backup Policy
A very important component of storage costs is something the customer never sees: the space set aside for backups.
WPX offers 28 days of automatic backups for free, and unlike other hosting services, backup storage space does not count towards the customer’s disk quota. Providing customers with 28 daily backup slots means that the backup storage system should be able to accommodate (in theory, at least) up to 28x times more data than the maximum of what users can consume.
Offering users a 50% increase in storage automatically bumps the theoretical capacity requirements for the backup storage system by the same proportion.
Obviously, the WPX team has taken this change into consideration and is prepared to meet the increased demand for backup space. Still, the matter requires careful studying and figuring out and requires a slight change to the existing backup policy.
It is well-known that unattended backups often carry data that will never see used again. Such data could be leftovers from site-level backup plugins, or large files remaining from a site relocation.
Often the user would delete such files by hand, but had the backup daemon already passed through the account for that day, it would have gobbled them up and kept them for 28 days more than necessary.
Processing abandoned data slows down daily backups and increases the time needed to restore from that backup in case of emergency, like restoring from an archive (in case of data loss) or migration to a different host machine (in case the existing host has some hardware issues).
In order to keep the risks of slowing down daily backup and recovery and with an overabundance of caution, the WPX Systems Architecture team introduced the following changes to the backup policy:
- Backups will process only files in native WordPress folders (e.g. root folder, wp-admin, wp-content, and wp-plugins);
- Backups will skip files carrying standard extensions for archives (tar, tar.gz, tar.bz2, zip, 7z, and rar);
- Backups will skip archives created by backup plugins installed by the user, regardless of archive file extension.
WPX are discussing internally a separate policy to exclude files bigger than 1GB. If employed, it will be announced and implemented separately.
Free 100% Bandwidth Quota Increase
Over the last 2-3 years WPX expanded their international presence and launched their advanced CDN network. While doing so, they gradually optimized their own bandwidth costs.
Introducing the London and especially the Sydney data centers did wonders to reduce bandwidth fees. Being closer to the end users means that each data center and each CDN PoP usually terminates at an internet exchange, where peering arrangements include unmetered traffic.
Because of these optimizations, WPX are now in a position to double the bandwidth quota for all hosting plans, for free. The new limits are:
- Business Plan users now have 200GB/month bandwidth;
- Professional Plan users can now consume up to 400GB/month of bandwidth;
- Elite Plan users are still enjoying unlimited bandwidth, subject to a very reasonable ‘fair use’ policy that has been further relaxed because of the above-mentioned optimizations.
Note: the bandwidth quota has a soft limit. WPX will not block or otherwise restrict any of their customers’ websites if they exceed their monthly quota. Instead, WPX will reach out and inform the customer about the over-usage. If it was a one-time case, no further action would be taken. If the user exceeds the limits of their plan regularly, they will be offered to upgrade from Business to Professional Plan (200GB/mo to 400GB/mo) or to Elite (unlimited bandwidth).
Part II: PHP Process and RAM Limits
It was a relatively simple task to determine the disk quota size. It took the WPX team much more time to determine how to handle more obscure limits the number of PHP processes per website and their RAM allocation.
Here, WPX needed to solve a totally different task.
Disk storage usually gets consumed at a gradual rate and can stay maxed out for long periods of time. In contrast, CPU power and RAM availability are fast-flowing resources. The chaotic nature of the Internet all but guarantees that not all websites will see dozens or hundreds of visitors at the same time, all the time.
Setting the right limits was not a matter of simply finding some numbers and sticking with them. It was a way to extract the utmost advantage of CPU performance by assigning a specific number of PHP processes that can run concurrently and feed them the amount of RAM they need to use.
The aim is to achieve a sustainable steady-state so that under normal conditions no WPX client would ever encounter the typical hiccups that have given shared hosting such a bad vibe elsewhere: slow page loads, 503 errors, and out-of-memory situations that lead to website crashes.
As the hosting service grew from dozens to hundreds to thousands of users over the first couple of years, the WPX admin team was carefully studying consumer behavior with the simple purpose of figuring out the optimal resource allocation.
The WPX team ultimately determined that the following limits work best:
- Up to 3 PHP processes per website. Sometimes, this limit can be bigger. I have more to say about this below;
- Up to 256MB RAM per PHP process. Note: This is the memory allocated for PHP only. This limit does not count towards other memory-hungry services like the MySQL database that stores the website data, or housekeeping stuff like email reception and delivery, AV/malware protection, etc;
- A separate allocation of 128MB of RAM per site is dedicated to opcache alone.
To explain how these numbers make sense, I must first make a detour into how web servers traditionally use PHP and RAM.
The job of a web server is to serve static content to site visitors. ‘Static’ means in this context that the data is already generated and is not made to suit the needs of a specific visitor.
This might be OK for some simple websites. However, WordPress is a content management system — a software platform whose singular purpose is to provide content tailor-made for every single user. Such content is not readily available; it needs to be created on demand.
The Role of PHP
Think of a user who returns to a WordPress blog every day to read news on a topic of interest. That user will look for a particular article using either the search feature, or by navigating via the categories, tags, and/or other taxonomies.
All the pages that the browser displays need to be custom-made for that user. The web server itself is not equipped to provide dynamic content; it must pass this task to a different piece of software. In the typical case, this is the PHP interpreter.
PHP is an entirely different piece of software that works in sync with the web server but operates separately from it. It requires CPU power and RAM — lots of both.
The usual job of a PHP process is to extract some data (for example, read a page template from disk, and/or load some content from a database) and process it until it becomes a piece of ‘static content’ — the stuff that the web server can serve to the visitors.
The Job of PHP OpCache
The OpCache is a special type of memory buffer whose job is to speed up the execution of PHP scripts. PHP is an interpreted language; it requires translation. Every time a piece of code executes, PHP has to load the script into memory, parse it, convert it into machine-readable code, and execute it.
One of the biggest gains achieved by the PHP developers during the last half-decade was to improve the speed of this process by translating human-readable scripts “just in time” into computer-readable code (opcode, or code that can be operated on), and then storing this translation in case of reuse.
The size of the PHP OpCache determines how much of the existing code of the website can be held in memory at a time. A standard WordPress installation usually requires around 40MB. A sophisticated website or a WooCommerce e-store with custom functionality could easily require 60MB or more.
The effect of OpCache is largely unnoticeable at the front end of a well-configured website because most content is already cached as finished HTML pages. However, its benefits are clearly very visible in the back end, where caching is disabled to avoid problems with data integrity.
By setting aside 128MB for this purpose, the WPX engineering team made sure that even very complicated websites with heavily dynamic back-ends will load quickly and perform smoothly in the browser.
The Importance of the CPU
For computers, fetching data from storage is abysmally slow compared to all other kinds of operations. The CPU is tasked with the assembly of data and instructions into a piece of static content. Because modern processor cores are very fast, they can often end up doing nothing while waiting for a bit of new data or program code to be fetched from the disk.
Similar to how a person doesn’t go to the local market for a single bottle of milk but buys different stuff in bulk, PHP processes prefer to grab data in big chunks and to keep as much of it in memory for as long as possible. That is what PHP needs RAM for.
While the PHP process is waiting for that data to arrive, the CPU stays idle. Therefore, in order to optimize the processing power of the processor, the server will run several PHP processes in parallel.
For WPX, the standard number of processes per website is configured to be 3, but this is a soft limit. Regardless of which hosting plan is used, the WPX setup allows busier websites to spin up to 3 additional processes, bringing the upper limit to 6.
How Many PHP Processes Can Dance on the Head of a CPU Core?
PHP process concurrency is a good thing to have, up to a certain amount; spinning additional PHP processes past the sweet spot is actually counter-productive. To do their job, PHP processes need to compete for CPU resources, and having too many active processes means that all of them get underserved.
The point that I am making is that the upper limit of 6 processes chosen by WPX is not a hard limit designed to take anything away from their customers. It is simply the optimal number, as determined by long experience and careful evaluation.
PHP RAM Limits
Every PHP process requires RAM to operate. Just like with the number of processes themselves, having more memory at one’s disposal is beneficial — up to a point.
A simple website with small attendance (no or few overlapping visitors over a short amount of time) can normally work just fine with 32MB or 64MB of RAM assigned to its PHP processes. A heavily frequented website that serves unique content to dozens of different visitors and does not benefit from content caching may require several times that quantity of RAM.
Traditionally, WPX servers have been running with a limit of 256MB per PHP process. This has long been considered ‘the golden standard’ in ensuring robust performance.
However, the recent rise in popularity of Gutenberg, Full Site Editing, and various page/website builders introduces significant complexity in two areas: the rendering of the editor pages in the back end during the process of designing the website itself, and the creation of the front-facing content pages.
It appears that the baseline memory requirements have moved upwards, and the time has come for WPX to respond to this sea change.
50% PHP RAM Quota Increase
To respond to this trend of increased memory consumption from page/site builders, WPX increased significantly the amount of RAM available to each PHP process. Your websites will now be able to use 384MB of RAM per PHP process, or between 0.75GB and 1.5GB of RAM, regardless of which hosting plan you are on.
You can now work on creating or improving your website design inside your favorite page builder, and you will notice improved performance for yourself. Your visitors will also benefit from the upgraded PHP RAM limits, even while you are working in the back end.
This increase will keep all hosting plans above the requirements of modern WordPress versions and the ever more sophisticated plugins and themes that run on top.
Some More Thoughts on RAM
Some of the more price-curious among my readers have probably checked prices for VPS services (either managed or unmanaged) and have tried to compare them against what is on offer by WPX.
Let’s do some dollar math here.
The smallest WPX plan (Business, $24.99/mo or $249.99/yr) allows you to host 5 websites. For each one of these, you can use 3 PHP processes with 384MB RAM each. For all sites, this means up to 3.75GB RAM dedicated to PHP processes alone.
PHP is not the only consumer of RAM in the system, and not necessarily the biggest one. There is the opcache, the memory buffer for the web server itself, there is the Database Server, the various AV/malware tools and application-level protection measures, and various background tasks like handling mail and backups.
A bare-bones Vultr HF memory-optimized VM (1 vCPU, 8GB RAM, 50GB storage) will cost you $40.00/month. Digital Ocean will charge you $63/month for a similar configuration: 2 vCPUs, 8GB RAM, and 25 GB storage (they don’t allow variants with fewer CPU cores for any 8GB offer).
And may I remind you, we are talking unmanaged VMs here. If you need to install, maintain, and troubleshoot WordPress/WooCommerce websites, you are on your own. If you want to monitor them 24/7, you need to learn how not to sleep.
Even before, WPX was priced extremely competitively in comparison with VPS and bare-metal offers. With the 50% bump in PHP RAM allowance, they simply priced all unmanaged VPS services, let alone any managed offers, out of the market.
Part III: CPU Limit Upgrades
A modern server CPU core packs a lot of punch. The increasing base and boost frequency, the faster memory throughput, and the storage access speed mean that every subsequent generation of processors will waste less time stalled for data and will perform more operations per unit of time.
If you have been a WPX client since they first started doing business, you will have, so far, gone through no less than 2 separate, unannounced performance upgrades, as their team regularly upgraded their servers, using always the latest generation of processors.
And this has served WPX customers well. Based on a sample of about 50,000 websites, the WPX network admins recently determined that on average, about 80% consume less than 5% of their CPU allocation.
This means that most of you, esteemed WPX clients, can enjoy up to 20X your usual traffic load without anyone noticing a delay in performance or you having to pay over-usage fees.
Average Load vs Full Average Load
As the number of visitors to a website increases, so does the amount of CPU time that the hosting account consumes. This behavior is normal, and WPX target their servers’ occupancy levels while considering this growth factor (among others).
So while your online business grows and becomes more successful, and your CPU consumption increases, you may find your growing website moved to a different WPX server where it will contend against smaller, less frequented websites.
Good and Bad Websites vs CPU Load
It might not make sense initially, but the websites with the largest amount of visitor traffic are not those that cause the highest CPU load.
The sites that suffer from the heaviest CPU consumption rarely have large traffic. Instead, they usually suffer from bad plugins or misconfiguration, and/or have been hacked and otherwise abused.
In the battle against high CPU load, WPX and its customers do not contend with each other; they are on the same side. And that is why WPX have devised a protocol to restrict high CPU usage when it threatens to degrade the performance of other users hosted on the same server.
How Most Shared Hosts Track CPU Usage
Most shared hosting providers allocate a certain number of CPU minutes per period, and that number is a significant component of every plan.
CPU time tracking is simple to set up. It can be measured objectively, and this creates the illusion that it is fair.
For example, if your hosting plan comes with a 30 CPU minutes daily allowance, this means that it can:
- Run at 100% CPU load for 30 minutes, or
- Run at 50% CPU load for 60 minutes, or
- Run at 5% CPU load for 10 hours, or
- Run at ~1.2% CPU load to make it through the day without being blocked for resource over-usage.
This approach to CPU resource monitoring works against everything that makes a web hosting service usable. It will punish you the moment your small website faces a growth opportunity.
Imagine that Robert Downey Jr. tweets a link to your recent fitness & wellness blog article. The merciless algorithm will let the first several hundred visitors through, and then snap its imaginary fingers. Your website will literally disappear, and subsequent RDJ’s followers will only see a server error message.
Your once-in-a-lifetime opportunity to shine will be gone, wasted.
While the example above is imaginary and made at least somewhat in jest, I have personally suffered from these issues in the past when relocating sites to low-quality web hosts that some of my customers chose for whatever reason.
The initial 24-48 hours after the relocation are the most critical because the person who does the job needs to make sure all settings are correct, all links work, etc.
The job itself is often CPU intensive. To save time relocating, I often skip moving cropped/resized copies of images and exclude all sorts of locally cached data from the migration. This means that all image thumbnails and resized copies, as well as the components of the local cache, have to be regenerated, which is a CPU and I/O-heavy job.
If the customer has decided to save a few bucks by choosing the cheapest plan, I’d sometimes hit the CPU minute usage monitor, and the website would begin loading at a snail’s pace — even though the hosting server itself might be otherwise sitting idle in the middle of the night between Saturday and Sunday!
This slow pace would drag me down, frustrate me, and increase my billing rate; all because of the overly simplistic way that 3rd party hosting enforces the ‘fair’ usage limits upon its customers. Yuck.
How WPX Tracks CPU Usage?
WPX made every conceivable effort to protect their customers against such an unfortunate turn of events. Their resource monitoring system does keep constant track of CPU utilization per account to prevent abuse of the service, but it will NOT limit usage based on this metric alone.
Occasional short peaks of maxed-out ‘instant’ CPU load are perfectly normal. Most websites hosted on WPX will have a very liberal performance cushion that can absorb traffic spikes that are between 5X and 20X higher than their normal traffic level.
This means that in those delightful moments when Iron Man shares a link to your website, it will be able to withstand many times the normal traffic without exceeding any limitation of your hosting plan. Such limitations simply do not exist.
If this ‘instant’ CPU load stays too high for too long, then — and only then — will WPX interfere.
The monitoring system samples CPU usage once per second, per user. If CPU usage remains too high for 24 hours, this will trigger a fair use policy violation. A WPX service engineer will automatically be assigned to investigate the root cause for the high load and assess further actions.
Oftentimes, it is something simple that the engineer can fix alone (enabling the local cache and turning the WPX CDN can do wonders for performance).
Other times, the issue will be more involved. In this case, WPX will contact the user and request them to solve the issue.
Free CPU Usage Limit Increase
Following the WPX Plans upgrade, CPU consumption limits per plan will be as follows:
- Business Plan users will have access to a single CPU core (no change).
- Professional Plan users will have their usage limit increased from 1.5 CPU cores to 2 CPU cores (33% bump)
- Elite Plan users will see their usage limit increased from 2 CPU cores to 3 CPU cores (50% bump)
Why no CPU bump for the smallest plan?
The reason is simple: statistically, it makes no sense. As I wrote above, very rarely users are CPU limited. Under normal conditions, and with the WPX free CDN enabled, CPU load on the server is negligible.
The 33% (Pro) and 50% (Elite) bumps to CPU limits are in practice nothing more than a more fair redistribution and rebalancing of the existing CPU resources among the different usage tiers.
For some users, the number of websites they can host under a single account at WPX is the only determining factor. But it says nowhere that one needs to run 5 websites before they have to upgrade to a bigger tier.
Rebalancing the CPU usage limits between the three plans creates a more clear-cut upgrade path for successful websites. Switching from the Business to the Elite plan includes, besides the other advantages, a full 3X increase in available CPU limits.
With 3 CPU cores completely at your disposal, and with caching and CDN enabled, your website(s) will be able to serve possibly several thousand visitors per minute, for up to 24 hours, without any issue and without violating the fair use policy.
It is no mystery that WPX are consistently at the top of the performance charts.
It was a mystery to me why WPX never talked about how they achieved that.
While speaking with several of their technical staff as I prepared to write this article, I could not help it but admire the approach they take toward their users. With WPX, your websites are in good hands.