Ever wonder what keeps our servers running and how we ensure that resources are fairly used and distributed between clients? Wonder no more. This blog post will attempt to explain the limits you see inside cPanel and what they mean to the average person.
What is CloudLinux?
CloudLinux is a special kernel distribution (or Operating System) we run on our servers which is designed to allow us to allocate certain amounts of resources to accounts. Like disk space and bandwidth, we can also restrict the amount of CPU power and RAM each account can use, as well as other resources. It is the ability to set limits on these resources that allow us to ensure that no one account can consume more than their fair share and cause problems for other users on our servers.
Before CloudLinux, it was possible that one or two very busy websites could bring down an entire server – causing problems for potentially hundreds of people or more! In these situations it was not uncommon for hosting companies to simply suspend the problem accounts until the situation was resolved and traffic decreased. Fortunately this is no longer something we have to be concerned about.
Interfacing with CloudLinux
You may have noticed that when you login to cPanel there is a bar on the left hand side that contains lots of information about your account. Typically this shows you the amount of disk space you are using, as well as how much bandwidth you have used for that month so far and more. Some of these values belong specifically to CloudLinux and it’s these values we will look at in further detail.
The above is a screenshot taken from an account that has seen large traffic and user spikes on one of our servers recently. Because of CloudLinux and the limits we’ve imposed, the increased usage to this site has not impacted anyone else on the server. These values are taken in real-time and will change when refreshing cPanel.
This value represents how much of your allocated CPU resources you are currently using. The amount of CPU resources we provide to each account is a percentage of the servers resources. For example, we may provide up to 10% of the entire servers CPU resources to each account, depending on which type of package you have with us.
If this value reaches 100% then it means you are using all of the available CPU resources we have allocated to your account. It does not mean that the server is using 100% of its CPU usage. Once this value hits 100%, any additional processes that try to use the CPU are put to sleep and will have to wait until any previous processes have completed. This can cause your website to appear to slow down dramatically and may even time out in extreme cases.
Physical Memory Usage
This value represents how much memory (or RAM) your account is currently using. Every process created by your account will consume memory; so every PHP page that a user accesses, every mail connection you make and so on. Unlike CPU usage where we provide a percentage of the servers resources, we implement a fixed amount here.
If this value reaches 100%, or the advertised limit, you may begin to experience PHP errors (if applicable) on your website, or in very extreme cases may see a CloudLinux error page. These errors are typically only brief and once the usage has reduced to below the limit, will automatically clear.
Entry processes are the number of processes that enter your account. For example, every PHP page that is accessed by a user will usually generate a single entry process. Many people misinterpret this value as “number of visitors you can have on your website at once”. Whilst it is true that each visitor accessing a PHP page will spawn an entry process, these processes usually end so quickly that it is extremely unlikely that 10 will be spawned concurrently and at a single moment unless you had a significantly large number of simultaneous visitors on your website at once. SSH sessions and cron jobs also count towards entry processes.
If the limit for entry processes is met then further processes will be denied. If you are trying to access a PHP page you may receive a 508 (Resource Limit Reached) page.
Number Of Processes
This is very similar to the above but includes all processes generated by the account rather than the specific PHP, SSH or cron jobs. This number is typically very low, even under high activity, as non-PHP tasks execute and complete even more quickly.
This value represents how much I/O (or disk activity) your account is using. Any task which makes use of the servers disk drive (such as reading or writing to the server) will consume I/O. We limit the maximum disk speed of each account to ensure that no single account can saturate the disk drives which will reduce performance for everyone.
Reaching this limit will cause all processes to slow down (to within this limit) and take much longer to complete. Typically you won’t notice this setting ever increase unless you perform something disk intensive like generating a large backup on your account.
Every file and folder inside your account will count as 1 inode. We limit the maximum number of inodes to ensure that users try to use the best methods available for structuring their website content. The more files an account has, the longer it subsequently takes for our backups to run and this overall can impact performance of these tasks significantly.
If the inode limit is met, no further files or folders could be created on the account. This can actually be very serious and will result in the inability to receive e-mail and may even prevent your website from working if it needs to generate a cache or temporary files.
We hope that the above helps to explain what CloudLinux is, why we use it, and what the limits mean to you. Due to the nature of shared hosting, these limits are required to ensure that each user can use our services fairly without impacting others.
We have been using CloudLinux for many years now and are extremely happy with how it works to protect our customers, and maintain reliability and uptime of our servers. If you have any questions or comments about this article, please let us know in the comments section below!