Anyone who keeps up with us socially (here at the blog, on Twitter, Facebook, or our forums) knows that we’ve moved all of our shared and reseller hosting servers over to Cloud Linux. We use those words a lot too, come to think of it. So as I sit here on a peaceful Sunday night at the local coffee shop, it occurred to me that we’ve never really covered what this Cloud Linux thing is. Instead of doing what I came here to do which is mostly browse reddit and look at funny pictures on the internet, I’m going to go over what exactly Cloud Linux is, what it brings to the table, and some of the more technical aspects of it.
So, what exactly is Cloud Linux?
In a typical server environment, there are no hard limits in place for each user. There are of course things you can limit (PHP memory use, cron job execution, disk space, bandwidth, etc), but those aren’t the things users do that will hit you where it hurts. The majority of resource problems stem from CPU use, or disk IO, bad MySQL queries, and other runaway scripts. Before Cloud Linux, it was always a game of cat and mouse. We had to have our sysadmins get notified of the issue, login to the machine, locate the user and suspend whatever activity they were doing which was causing the problems. Pretty lame, right? We thought so too. Cloud Linux changes the game, not only for the end user like yourself but for us.
So enter Cloud Linux. CL creates a virtual environment for each individual account on a shared server and allows us to limit the amount of resources any single account can use. Gone are the days of a single account taking up every single CPU on the machine because it wants to. This brings a lot of benefits to the table for both you end users and us as a host. We deal with less system level resource issues, there are fewer service interruptions, and most importantly the speed of most users sites go up as the machines aren’t using as many resources. As an end user, you also benefit from the lower server load and fewer interruptions of service. You also get a nifty little display in your cPanel (more on this later) which shows useful stats for your account.
Talk nerdy to me
Now you have a basic idea of what this fancy software does. If you’re content with knowing that it just works, carry on to the next section. If you want some more info, stay tuned. Most of what we’re going to cover can be found at http://cloudlinux.com/docs/index.php but we’ll hit on it here.
LVE – LVE, short for Lightweight Virtual Environment, is the driving technology behind the CL methodology. LVE, developed exclusively by the folks over at Cloud Linux, is a kernel level technology which handles the isolation and resource monitoring that CL is able to provide. LVE brings together technology provided by Apache modules and the Linux kernel. More reading available here: http://cloudlinux.com/docs/workingwithlve.php
LVE and cPanel / WHM – CL has developed a plugin specifically for use on cPanel / WHM based systems. Installed through yum (CentOS package manager), the plugin allows you to view resource accurate up to the last second, and also allows you to edit default and individual LVE limits.
Installation – Installation is really quite simple for us at least since we’re using CentOS and cPanel. All you need to do is wget their installation script, run the script and authenticate it against your activation key. Since it is a new kernel, a reboot is required.
Data Reporting – The CL kernel adds a few proc entries for user usage statistics as a small set of command line tools to view & monitor usage. In addition to this the cPanel / WHM integration has user based reporting which will log a history of CPU usage for an account allowing for quick and efficient tracking of resource usage.
By now, I imagine some of you have noticed the new fancy little metrics on the left side of cPanel when you login. These metrics are CPU use and concurrent connections. Here’s a picture of what they look like:
Pretty standard and it looks just like all the other stats. A few key points:
- The CPU use there is for your account only and is shown in real-time. It is not the entire server, so when it says 100%, it means you’re maxing the CPU limit (1 core) which we’ve configured.
- Concurrent connections: Despite the wording implying connections to your site, the idea behind the concurrent connections is actually the amount of active processes on your account. These processes can be cronjobs, PHP processes, Perl processes, etc. A single user should rarely if ever consume all 20 connections, so this metric is mostly informational.
- If you are consistently hitting your limits, it is time to look at optimizing your site(s) or upgrading to a VPS as you’ve most likely outgrown shared hosting.
But wait! There must be some downside to this!
With anything in life, with the good comes the bad. Fortunately for us (and you) though, those negatives only effect a small subset of users. Well, who are these users? They’re the ones who were causing resource issues before. Thanks to CL these users are now limited with the amount of resources they can consume. If they hit their CPU limit the system won’t allow them to use anymore resources and as a result future processes that need CPU time will have to wait until others are finished. As a result some users think CL causes slow machines & websites. The reality of course is that they were gaming the system before and taking advantage of a server with no resource limits.
What comes next?
Quite a few things actually! The team over at CL is working on developing a MySQL governor. Their governor will be a set of utilities provided by a USER_STATISTICS table which is available in the CloudLinux version of MySQL. The USER_STATISTICS table is available because of technology originally developed by Google. The set of utilities includes a daemon which monitors the MySQL use by account, and a top (the Linux command top) like utility called dbtop.
They are also working on technology which will work within LVE to limit disk IO and memory use on a per user basis. As soon as these features are seen as stable and production ready, we’ll definitely be implementing them.
While it is difficult to emphasize how awesome CL is in a 1,000 word blog post, I think this gets the point across. Everybody benefits, everyone is happier, and we are involved first hand in technology that will be considered standard within a few years, if not sooner. We’ve been using Cloud Linux in production now for about 2 months and in that time we’ve seen the load average on all servers reduced by at least 50%. All in all everyone is pleased with the decision, and the few complaints we’ve received have been from those users who are maxing out their CPU quota. The CL staff have been super helpful and we’ve even developed a very strong working relationship with their lead developers and CEO.
Feel free to post any questions or concerns about this technology in the comments, we’d love to get some more user feedback 🙂
Thanks for this. Very informative 🙂
Hey Brian, nice post. We’re actually in the process of implementing this as well with a LiteSpeed server setup. Just curious, what type of max CPU quotas you’re setting for your customers?
We currently limit people to 1 core on the CPU.
All of this can be achieved through a few simple scripts, instead of replacing an OS with another OS, just code up the application, and update the .htaccess file with a suspension redirect.
Actually no it cannot if you understand how it works. So typical case with what you suggest:
user 99.9% script.php
user 99.9% script.php
user 99.9% script.php
user 99.9% script.php
user 99.9% script.php
So now a suspended page shows for the user since they’re using 5 CPU’s.
Here’s what happens with CloudLinux
user 20.0% script.php
user 20.0% script.php
user 20.0% script.php
user 20.0% script.php
user 20.0% script.php
So their site gets slower but does not show any nasty messages unless their CPU usage for their scripts is so high they start creating timeouts.
So it’s just dividing CPU among it’s processes and not letting it go beyond which is significantly better than some sort of suspension page. So user launches some crappy script at 2am every day it’s not going to make their site go down. It’s just going to make their site slower while it runs as it’s taking part of the CPU time normally used by their visitors.
So you are no longer on centos? I could see that cloudlinux is for a paid subscription. Any free alternatives? Or can you pay for just one month then continue using it afterwards?
We no longer use CentOS on any of our shared and reseller servers. It’s a paid monthly subscription we pay to use the software. It is well worth the cost for us as we’re dealing less with system resource abuse now.
Can you clarify how this works? With CloudLinux, if a dynamic site does max out on CPU, it will only slow down – not serve blank or error pages? Thanks.
It will only slow down it will not serve blank or error pages. Well I suppose that is not true entirely because if you have a script that takes 60 seconds to run and you have 5 of them running you’d hit the web server 120 second timeout. Of course if you have an application that takes that long to run you already have major problems.
I have a CentOS 5.7 w/ cPanel 11.30 + nginxcp plugin. I want to move over to CloudLinux + LiteSpeed. What would you suggest me:
a) setup a new server with CentOS 6 -> Install cPanel -> Move customers over -> Upgrade to CloudLinux 6 or
b) stay with CentOS 5.7 and upgrade to CloudLinux directly from there?
I’ve read that theres no upgrade path between RHEL5 -> RHEL6 and as such nor for CentOS or CloudLinux. Which version do you run on your servers? 5.x or 6.x?
Thanks in advance
I would just switch with CentOS 5.7 and upgrade to CloudLinux from there. It’s not necessary to switch to CentOS 6 unless you need something specifically from it such as maybe newer versions of software rather than just backported fixes. Obviously the newer versions also have a newer kernel with new features so ext4 for example. You just need to evaluate if it’s worth it for you to make the migration. It probably isn’t at this time I would only make the switch when you’re migrating hardware.
As far as what version we run well we run CloudLinux 5. We probably won’t be running 6 until next year. Even then we would only be running it on new hardware we would leave 5 on any of our systems currently running it.
So cloud Linux is a cloud web server for Linux that allows shared server users to expand or contract web server space as necessary?
As your client, I’m really curious to know how much CPU quotas, CPU %, IO limits, and Memory limits set to each account?
We currently only limit CPU usage per account (each reseller has their own limit, each shared account their own) to 6% of the total CPU power or 1 full core on the machine.
Each server has 24GB of memory and 15K SAS drives in a striped RAID-10 array so we don’t often run into issues with those resources – so why limit them!
well, that’s great, this info make me feel more confidence using HH, and I feel that HH is far better than your sister company, FH.
Thanks this is very enlightening, one question before I jump ship and join HH. Is there an easy way to transfer sites to HH (wp blogs) and if as is hoped the site gets too busy for shared/reseller is the path to a VPS fairly smooth or would it involve having to find someone to transfer the site again.
OK, so the missing data questions:
1) What is your servers CPU(s) (type/model, #of cores, Virtualization Technology)
2) What hard drive type do you run (SATA 2 or 3)
3) What storage system are yo using (NAS, RAID, SATA in the case)?
4) How many accounts (NOT clients) do you average per server?
I have a CentOS 5 LAMP cPanel/WHM server with more than 500 accounts (including sub-domains).
Intel E3-1230 – 3.20 GHz Quad core
16GB ECC server grade DDR3 memory 6GB/S
4 each WD 500GB SATA III 6GB/S drives in RAID 10 dedicated to each server only (in the server case).
My server WHM load almost never reaches 1. (4 is considered full use of a QUAD core CPU)
I have a LOT of Joomla, WordPress and other database intensive dynamic sites hosted so it isn’t mostly static webpages.
Please tell me why I should consider using something that will slow down my client’s sites.
I have spent a lot of time tweaking my servers so they are designed to run dynamic web sites at the fastest possible rate and have achieved this on what I consider a fully loaded server, which loafs along at a load of 1 or less. I don’t get client’s dynamic sites giving 500 errors because of getting bogged down due to database transfer rate.
My company’s main selling points start with fast page loads. It seems this software is designed to allow hosts to overload servers and not bother with tuning their servers to run at their full capacity.
Sorry but I’m not sold on this type of hosting or software and this article has hardened my resolve on this matter.
Is a nice point of view but i think this is the wrong way that anything in this life can have.
You can by a car to kill people or to get transported, choose is yours.
The thing clear to me about CL is that it brings a better way to handle and identify abusive accounts that should go to VPS or Dedicated servers, as Brian an HH seems to be doing well. Ok servers needs to be well prepared, but i dont think you should you 100% of their capacity, as everybody knows about something called reserver for emergencies. If you have it running on 100% capacity (processors and memory), is assume many risks of unforeseen.
And who can say that 500 account in 1 server is not a full server already? It depends
I could reach a “full” flag with 300 account or less, or even have 800 and more. It depends.
But the things is the machine supports all this, the point will be to determine who s being the bad boy. So actions can be done for the common good. : )
Thanks all for sharing this great experience about CL. Success for everybody! : )
CloudLinux is CentOS, so you are still running under CentOS, actually CL is I think based on RHEL which is also CENTOS, so the 3 of them are the same thing.
CloudLinux = CentOS = RHEL
CentOS is just RHEL with the remove branding. CloudLinux is the the same but with a few things added to the kernel, its based on the OpenVZ kernel I thing.
The name itself is a bit misleading as its not a new OS by itself, it just a fork or modification to it.
You also assume incorrectly that your users are not completely limited. Not true. They can still abuse your server with almost anything that does not fall under Apache process, which is FTP, email, databases, Ruby scripts, Java scripts, in case you offer Tomcat, etc.
It makes life better, but its still not isolating an account under everything it runs. Maybe in the future, today its mainly only for web process that go via the web server.
Your limits are also to high for a shared host. Someone using 10 process per second is already too much? Why? Because a process is reused and killed almost immediately, if not there is something wrong with the website or its just to intensive for shared host.
Most hosts do not realize that CL itself ships with default settings which are already high enough if only a few users use them you are in troubles. I suggest shared providers to start with lower limits, otherwise there is no point in having Cloudlinux is a couple of users can still bring the server down.
Russel does have a valid point. It is true that CloudLinux will slow websites down, but this is only true for users over their limits. Its surely not for everyone, if Russel is hosting high performance speed websites, then this can hurt their users, but on the other part he needs to make sure to babysit every single account so one does not go on a killing spree killing the whole server.
Its not for everyone and for sure Cloudlinux will not solve the problem of bad providers overselling their machines.
Russel, Cloudlinux is a tool. You can use it right or wrong, it does not mean a provider will oversell just because he is using it. You could also have a huge limit to the point a user never hits it so it will never slow down, but do you want that? Maybe yes, maybe now. You could have accounts to 80% CPU of all cores, I hardly thing one website would ever hit this, so they will never slow down, and if they do it, then with Cloudlinux it would mean the server would crash anyway, so nothing was lost. Slow website or crashed server, you choose, because if services are at 100% they stop working for the time it goes, or things are ugly slow anyway.
You also forget that CloudLinux is mainly for shared providers. And this means users themselves upload and install their websites. Nothing stops one user from having some configured incorrectly. Example: He has a PHP script that when runs, uses 100% of the CPU and he puts it on a cron to run every minute. What will do you? Suspend the user? Kill his cron job? Erase his script?
Now imagine having 10, or 50 of this users. With Cloudlinux you don´t need to actually do anything, he will keep running his cron and his 100% CPU script, but it will be maxed out to his limit, he will not affect anyone except himself.
Why not just use limits.conf and its cohorts?
Super great support.
Cloud Linux is good and a must for shared hosting business. but the best part is their lightning speed for support!
Memory limits are the trickiest. Visitors will get an error 500 (Internal Server Error) when the site hits the memory limit. This error might mean something is wrong with the script, with server settings, or it might be due to memory limits.
Basically means, if you have more than 50 visitors at one time, your site will fail miserably. Pages will take about 40 seconds to load.
So, if you have a site that doesn’t get any traffic, HawkHost is for you!
If you receive 50 requests/sec not to be confused with a forum claiming 50 simultaneous users you would serve 4.32 million pageviews a day! A month of this kind of traffic you’d serve 129.6 million requests. This doesn’t sound like some small time web site. For a reference point a site like reddit serves 150 million pageviews in a month. You need to remember this is shared web hosting at an affordable price. The amount of hardware that powers sites serving millions of pageviews a day is not a single server. It’s hundreds of servers with specialized systems for each portion (web servers, database servers, memcache servers etc)
Thank you so much for informative article, I am totally and entirely a newbie, Hope someone can understand and help me…! I have recently bought a reseller hosting package where they mentioned that reseller accounts use their special dedicated cloud, When I heard the word Cloud, I thought its cloud. I buyed it and when I looked at the cpanel, Physical memory is 256MB, when I contacted them, for any chance of increase, they replied me
“You can not breach that figure as its simply a base point in CLOUDLNUX
This is not fixed in anyway as such, if you use / need more RAM this will simply adjust to suit the requirement.”
So when they said it adjusts, I believed it is cloud hosting. But after searching online, I found that the CloudLinux is not actually a true cloud hosting.
Also they didnt mentioned the RAM, Will cloud linux displays Ram or Memory usage? Is 256 MB high in Cloud Linux? In normal traditional hostings likegodaddy nowadays minimum is 1GB
My problem is, as I bought the reseller hosting, I advertised hosting as cloud hosting and got around 5 clients (just purchased few days back) What should I do now and is it cloud hosting or not?