More Server Mayhem
Just when I thought I had finally solved my web-hosting woes by transferring to a virtual private server, I am slapped in the face by the cold realities of server memory limitations. Apparently, WordPress-powered sites are extremely resource-intensive, requiring insane amounts of random access memory (RAM), something which does not concern those of us working from shared hosting accounts.
On a shared server, system resources are shared among the various accounts that reside on a particular server. When one of these sites takes a hit and requires extra bandwidth, it “borrows” it from the total amount of bandwidth available for the other shared sites, leaving them with limited memory and other server resources. This is one of the reasons that shared hosting can suck so badly at times. If you happen to be located on a server that hosts a few resource-intensive or unstable sites, chances are high that your site will not perform as well as it might if its neighbors weren’t such stinking pigs.
Destroyer of memory
With shared servers, it is this sharing of server memory that enables WordPress-powered sites to enjoy their resource-hogging plugins without too many issues. Sure, sharing memory can sometimes be a drain when you are fighting with hundreds of other sites for that extra megabyte of precious memory, but at least your site doesn’t shut down if you happen to exceed the predefined memory limits. This is exactly what happened after I setup Perishable Press on my new virtual private server at WiredTree. To be honest, since this was my first move away from shared hosting, I really had no idea how much memory my site was using. Turns out that just this one site — with its reduced number of plugins and optimized content — was enough to gobble up every drop of the 256 MB of allocated RAM without even blinking. It was like, okay, site now online — oops, not any more — you just exceeded your memory limits and crashed Apache. Again. Ugh.
This was frustrating on many levels. First, I had just spent an entire week getting everything setup and transferred over to the new server. Second, I managed to eat up all the available bandwidth with just one site, and that doesn’t include my installation of Mint (which is resource hungry in and of itself). Third, I realized that there was just no way that the virtual private server with its paltry 256 MB of memory was going to house my entire army of sites — let alone just one of them. Nonetheless, I was desperate to make the switch work — I really wanted more control, root access, greater stability, etc. — and was willing to pay more each month while doing everything possible to make it work. So I called WiredTree..
To their credit, the support team at WiredTree is phenomenal, rivaling that of A Small Orange any day of the week. So, as I embarked on my mission to significantly reduce the amount of memory used by Perishable Press, I was in good hands. After explaining my situation and frustration with tech support, my suspicions were confirmed: WordPress used to be a high-performance piece of software, but those days are long gone. Now, a WordPress-powered site — especially with a few of its more infamous plugins — is an absolute resource-guzzling nightmare. Even so, I enjoy the functionality that WordPress provides, and was determined to make it work, dammit.
Reducing memory usage
To make a long story short(er), here are a few of the steps that I took in order to lower the amount of memory required by Perishable Press (keep in mind that I needed a serious reduction in memory usage to make things work on the new server):
- Disabled Popularity Contest plugin
- Disabled Top 10/Hit Counter plugin
- Disabled Bad Behavior plugin
- Disabled Nofollow Free plugin
- Disabled Download Counter plugin
- Disabled Get Weather plugin
- Disabled BlogStats PCC plugin
- Disabled Authenticate plugin
- Disabled Simple Tags plugin
- Eliminated mod_gzip compression
- Enabled Caching of content
- Upgraded to Apache 2
- Cut off my left testicle
Needless to say, after the butchering, I was left with the most rudimentary of WordPress-powered sites. Only the basics: stuff like Akismet, Feed Redirect (or whatever it’s called), and a handful of other run-once and/or admin-only plugins. The result? Memory use dropped by around ten percent — nowhere near enough to justify trying to transfer another site or even enable Mint. Such a move would have crashed ‘ol Apache for sure. So, at this point, I had a decision to make: strip every one of my sites/projects down to the utter core and forever forget about any bells and whistles (or even secondary functionality), or return to the shared-server scene and continue where I left off..
So, it is with great insanity that I transfer Perishable Press back to A Small Orange, which, despite its recent performance inconsistencies, is for now a far better solution given my site development and web design goals. Moral of the story: if you are thinking about transferring from a shared server to a virtual private server, make sure you understand how much memory you are going to need before fighting a week-long hellish battle beating your bloody head against the virtual walls.
In closing, I would just like to add my two cents about resource allocation on a majority of currently available VPS plans: other than for marketing purposes, there seems to be absolutely no point whatsoever in providing customers with hundreds of gigabytes of disk space and bandwidth while limiting the available memory to 256 or even 512 MB. In my mind, it seems impossible to use anywhere near that amount of bandwidth if you are only able to run one or maybe two averagely pimped websites without crashing the server, over and over and over again.. But then again, I am no expert on the subject.. — what do you think about it?
Based on my previous experience being in the web hosting industry I dare to say that most plans offered by hosts today are crap.
Most hosts nowadays are overselling like crazy to get attentions because the market has become very condensed.
And when hosts don’t plan or are not careful when overselling, we as customers will be in the losing end.
To date, I have never seen a hosts that offers RAM upgrade. It would be nice if hosts took a step back and really focus on what should be done to improve their service and make the customers happy.
Absolutely! Finding a decent host these days is a total nightmare.. I just don’t understand how someone could actually use 300 GB of bandwidth and 30 GB of disk space with a meager 256 or even 512 MB of memory. I mean, come on! That’s like building a 747 with only one and a half seats. Really amazing.. and yes, I totally get what you are saying about RAM upgrades — I don’t remember seeing such a creature, and if I did, I sure couldn’t afford it!
Wow, I had no idea WP was so RAM-hungry.
But if you’re resigned to going back to shared hosting at the moment, you might want to look at a Media Temple (gs) account. I had a very large traffic spike last month on mine but even so I didn’t come anywhere near the very generous resource allocation in terms of “GPUs”, and my WP installation uses a fair amount of plugins plus mod_deflate etc.
Hmm, glad to hear something positive about the Grid service. I did look into that option, and would have went that way, but I kept running into these nightmarish posts about the Grid turning out to be a total failure. So I chickened out and tried the MT DV, which also has restrictive memory limits. Thus, I returned to ASO, which seems to handle traffic spikes fairly well.
How has the Grid been for you? Sounds like you are having a positive, reliable experience? How many sites are you running on the account?
I was also going to get an account with MT but when I made a few research, there were more bad reviews than good.
My account with ResellersPanel is about to expire and I’m looking for other alternatives.
I can still recommend A Small Orange, despite my recent rants against them. Overall, they are better than any of the other hosts that I have tried. Another inexpensive host that provides good service at a reasonable price is ivhosting. They have a $99 deal that is pretty competitive. I use ivhosting as a backup server and have been with them since 2005.
Yeah, I ran into those stories too, but they’re mostly from 2006 and early 2007, before MT upgraded the Grid’s MySQL handling and GPU reporting, among other things.
Since I opened my account in early September it has been rock-solid, apart from one half-day when they had to do some storage maintenance which went a bit wrong. They are very transparent and informative about stuff like that. In fact they are already talking about the successor to the Grid, the Cluster Server, for next year.
In the meantime on (gs) you get SSH and can run php5 if you like. ;) And there are customer forums (in beta), which are pretty handy.
At the moment I run two sites plus a development mirror for another site on it. I don’t know what the maximum number of sites is. I think it’s “a lot”.
No affiliation with MT, just a happy customer. :)
There’s something I don’t understand here about the RAM:
I have a php memory_limit of 40MB. Many hosted services have this set to 8MB or 16MB. I’ve seen people having problems with a plugin not working being told to get their host to up it to 16MB.
So, if WordPress works fine for most sites, on servers with a PHP memory_limit of 16MB, then how on earth is WordPress using 256MB RAM on the server you moved too? I know the php setting and RAM are not the same thing, but as far as I can see WordPress will really only be using PHP (what else is it doing?). What was your php memory_limit set to?
Don’t get me wrong – I’m not having a go. I’ll admit that you know a lot more about servers etc than I do (based on your previous articles, which I’m learing a lot from by the way). I’m just really puzzled by this and hope you can clear this up for me. Thanks
Thank you for sharing that information. The cluster server looks very interesting. I hope they thoroughly test everything before rolling it out to the public. I can’t imagine how popular their grid server would be if it weren’t for all the problems it encountered when it was first released. It is good to hear a positive opinion about the grid. I was very close to signing up, but just couldn’t justify all the bad press. Although I am back at ASO with no complaints, I will keep both of the MT options in mind. Great comment, thanks a lot :)
Although I am no expert myself, I will try to share my opinion on the matter. First of all, it needs to be said that, if I really wanted to spend some time on it, I probably could have reduced my overall memory usage enough to justify the move, however, time is always of the essence, and I am running very short on it these days.
Having said that, it is important to keep in mind that PHP memory is only a small part of the overall usage of system resources (CPU & RAM). As far as I understand it, WordPress-powered sites are resource-hungry because of their role in the page-generation process. When a browser requests a page from a WP site, the request is sent to Apache, which then summons PHP via WordPress to query the database. Once this is done, the results are processed by WP/PHP and the resulting page is then finally sent to the browser via Apache.
Within that process, Apache may have its memory set to, say, 256MB, which is easily chewed up by processing simultaneous Apache requests, WordPress scripts, and database queries. On top of that, depending on how it’s setup on the server, Apache is also busy processing htaccess directives, serving images and other static files, and recording everything (errors, requests, etc.) as it goes. Then, multiply the memory and cpu used for that process and multiply it by every visitor, spider, spammer, and cracker that happens to be hitting your site. So, yes, PHP memory plays an important role in controlling how Apache and WordPress uses its memory, but that is only a small part of the entire equation.
Thus, to return to my opening statement, we can see how there may have been many additional factors that could have been tweaked and optimized if I had taken the time to implement them. For example, I could have replaced Apache with lighthttpd, employed MySQL query caching, enabled PHP acceleration, and even setup an accelerating proxy such as Squid or Varnish. For sure, implementing such strategies will definitely help overall resource usage, and I definitely plan on taking advantage of them during the next lap around the virtual server.
I hope that info helps, Stephen. Like I said, I am no expert, but I enjoy learning and sure have fun experimenting with all of this crazy stuff! :)
I have a Dreamhost account and sometimes it’s more like a “nightmare-host”. The first week I was with them I had 6 outages. They have gotten a bit better but I guess it’s true that “you get what you pay for” — especially when it comes to shared hosting.
So true! At its best, shared hosting can be a dream (so to speak), however, at its worse, it can be an absolute nightmare!