Windows Web Hosting, Web Technologies, etc
Windows Webhosting
Elastic Computing AKA Cloud Computing as provided by Applied Innovations
Aug 8th
I broke this post up into a series of posts. The first post (just published) gives an overview of ARR in IIS7 and why it’s cool. This post is going to talk about the first stage of cloud computing we’ve deployed at Applied Innovations and the benefit’s of it such that you could use it today to control your own hosted IT Infrastructure costs.
About the Applied Innovations Cloud Platform.
Applied Innovations is a charter member of Microsoft’s Dynamic Datacenter Alliance. The alliance is composed of a handful of hosters, ISVs and system integrators that have deployed a solution on Microsoft’s Dynamic Datacenter toolkit. Our implementation of the toolkit is a highly available cluster of VPS servers. These VPS servers or a series of physical servers that use a high speed, redundant SAN cluster for storage and in the event of a hardware failure or need for maintenance the virtual machines running on one of those servers will automatically fail over to one of the other nodes to keep the services and applications running 100% of the time.
In addition, our own solution also affords the user the ability to achieve a level of cloud computing called: elastic computing (a hot topic these days as Cloud computing is all the rage). Elastic computing is the ability to dynamically scale up and down your computing resources as your needs change. For instance, let’s consider the case of dedicated hosting.
When the Dedicated Server Meets the Cloud.
In the past when a hosting customer outgrew shared hosting they needed to move to a dedicated server. Moving an advanced web application (such as a live ecommerce website) from one server to another is time consuming and often costly so it’s something most store owners don’t want to do frequently. With that in mind they would often look at dedicated servers and have to predict their need for hardware not only today but often 6, 12 or even 24 months into the future or they could find themselves moving again in the near future. The problem with this is that often they found themselves purchasing more hardware and taking on a larger cost today in preparation for tomorrow than they needed and sometimes could afford.
Further, today we all know just how quickly the economy can turn and how fast you can find that your expected growth can disappear and all of a sudden find yourself needing to scale down instead of up. Or perhaps your business is seasonal and you find that you really only need a full dedicated server a few months out of the year and don’t need to pay for the full solution the other 9 months of the year.
At Applied Innovations, Our Dynamic Datacenter Solution is the answer to these very issues. With one of our highly available clustered Windows virtual dedicated servers (VDS servers) you’re able to scale up your diskspace, your memory, your processing power and likewise scale down your diskspace, your memory and even your processing power with just a click of a few buttons. This puts you in control of your hosted IT infrastructure and allows you to adjust your costs in line with your business.
What about Elastic Scalability? I thought that was Cloud?
The other hot topic in Cloud is Elastic Scalability. This is where your web infrastructure is hosted on multiple virtual machines (which may be elastic computing VMs) and is load balanced across these nodes. you then have the ability to expand and contract the number of nodes your site runs on as your traffic and business demands change.
We believe this too is a vital component to cloud computing but for 80% of the hosting business on the market today, it’s just not a necessity.. today. For that upper echelon of hosting customers (the Amazon, the Twitter, the Facebook type company) this is a necessity but for most companies this level of cloud computing is just an extra expense and in today’s economy extra expenses are not needed.
What’s next in the Cloud?
This is only the first phase of our own Cloud Initiative and there are of course other notions of cloud besides elastic computing and elastic scalablity that I didn’t hit on. What I can guarantee is our team is working as diligently as ever to continue to work on our Cloud Initiative and will continue to evolve our service offerings. In the meantime if you want to cut your dedicated hosting costs and have the ability to adjust your hosted IT infrastructure costs as your business adjusts, contact our team about our Managed Windows VPS Hosting solutions built on top of the first stage of our Cloud infrastructure.
A little info about Application Request Routing (or ARR) in IIS7.
Aug 8th
In the 10 years I’ve been working with Windows as a web hosting platform (and the 15 or so I’ve been working with web servers period), I can confidently say that IIS7 is without question the best web server platform to date. Microsoft has been working on a plug-in for IIS called Application Request Routing (or ARR). The first version of ARR provided a suite of tools that allowed it to function as a Application Layer Load Balancer! The recently updated beta version extends that functionality and now makes it easy to turn a Windows Server running IIS7 into not only a Load Balancer but also a Reverse Proxy / Cache Server. Meaning you could potentially power a CDN using a bunch of Windows Servers.
What’s an Application Layer Load Balancer?
First I should define a load balancer. When you have a very popular website (think yahoo, Amazon, etc) you need a bunch of web servers to accept all those web requests. One server just won’t cut it. In order to keep things all tidy and in order you use a machine that controls those requests and which web server it goes to. You extend that machine and have it start monitoring your web servers and your web visitors and it can start managing those requests and directing it based on things like:
- The visitor’s browser type
- The visitor’s IP address
- The type of content being called (JPEG, MOV, HTML, ASPX, etc)
Then you get a step fancier and not only direct those requests based on the request but also on the state of the server, who’s had the most bandwidth, which server do you prefer requests to go to, which server is working hardest? etc.
Now the Layer 7 Load Balancer or Application Level Load Balancer can distribute requests based on the various application specific information. This could be a cookie for instance or information within your app itself.
NOTE: I’m not going to go into this any further you have the basic understanding of a load balancer and I’m not going to deal with NLB and layer 4 and all that fun stuff. Go Bing! it (yeah I said Bing!).
Wait aren’t load balancers expensive, complicated and require a whole other level of geek?
You bet! But they’ve gotten better and there’s a fair number of open source ones out there (in fact, I was reading earlier that wordpress.com was running on an open source one).
Well didn’t Windows Always have this?
Not really. Windows had Network Load Balancing which would allow you to run a couple servers with the same application on it. It would monitor ping on the machines and if one machine died all requests went to the other. So that was really load balancing at the machine level. This was good enough for most but what if the machine was fine but your service (perhaps IIS itself crashed?) . Then they had Clustering services. Now clustering services was service aware. Meaning if your service (perhaps IIS ) crashed on one of the machines it would failover to the other machines but it didn’t really know anything about your website’s application (perhaps an ecommerce store) so you could have a server online and the web service online but the actual application on that server failed and still be sending requests to it. So in comes those clever folks in the IIS team at Microsoft with Application Request Routing (ARR … Matey!).
Video Introduction to Application Request Routing and more info
Microsoft has a great video on ARR and it’s geared towards webhosts but does a fantastic job of showing the functionality of ARR and just how easy it is to configure and make use of. You can see that video on the IIS.net site at:
http://www.iis.net/extensions/ApplicationRequestRouting
In addition to the video they really spell out all of the features and benefits to ARR in detail. Some of those features include:
- HTTP based routing decisions.
- The ability to offload SSL requests
- The ability to offload compression
- Health monitoring of live traffic and specific URLs to monitor and adjust routing of requests.
- Support for extensive debugging through Failed Request Tracing Rules.
Windows Hosting or Linux Hosting? Which runs PHP Faster?
Aug 6th
This is one of those questions everyone and their brother tries to answer and it seems in the 10 years we’ve been offering web hosting at the question is still the same and the answers are still the same BS 10 year old answers.. Typically you hear responses from the advocates of Linux over Windows such as these:
- Keep Microsoft for Microsoft and Use Linux for everything else. (yeah those days are over. Unlock the doors and come outside, Y2K never happened and it’s not going to.)
- PHP is faster on Linux, it’s optimized for Linux and will NEVER run on Windows. I know because I’m a uber-hacker and have my own apartment (in the basement of my mommy’s house.. er I mean my room-mate!)
- Windows Hosting is more expensive than Linux hosting. (Until it breaks and you need to call support but your site is down for 3 days while you try to get support off some usenet feed… Then which is more expensive?)
Well, I’m a big fan of benchmarking things and just testing this for yourself. Of course ever since my Virtuozzo versus VMware versus VirtualPC comparison where all of VMware wanted to take me outside and have me drawn and quartered, I’ve decided to not post such comparisons. Fortunately for us Joe was kind of enough to run such a comparison (using the exact same machine you VMware fan-boys) and really compare PHP on Windows and Linux as well as ASP.NET on both. I’m not going to repeat his results you can see it on his blog. But the long and short of it is:
- ASP.NET rules the world of performance…
- PHP 5.3 on Windows is as fast or faster than it is on Linux. Did you hear that? PHP 5.3 on Windows is as fast or faster as it is on Linux.
- MySQL on Windows is slower than it is on Linux (Which we knew from our own experiences)
- PostGreSQL is comparable on both.. I never even considered looking at PostGreSQL.
- the MS SQL PHP driver is slightly slower than MySQL (but version 2.0 is in the works and will hopefully address this).
So there you have it you you whiny little school girls that insist PHP runs like crap on Windows and why would you ever use Windows Hosting for PHP or for anything (I’m not calling out any names but you know who I’m talking to). Microsoft has stepped up and leveled the playing field with PHP.
If you’re curious what work has been done in this area, Mai-Lan from the IIS team has a nice write up on it.
So that’s the word. Microsoft has recompiled PHP5.3 and helped optimized it for Windows. Now the Windows-Haters will have to find another reason to complain.
Hey to celebrate the increased performance and Joe Stagner stepping up to show the world that Windows IS good for PHP and doing an informal benchmark on his own. Here’s a coupon code that’s good for 25% off your first hosting term on any shared Windows hosting or Windows VPS hosting package good for the month of August: JoeRocks25. You can thank Joe for inspiring the great discount and go subscribe to his blog I do!
AppliedI.net Windows Hosting Homepage revised
Jun 16th
Windows Hosting has a new look, at AppliedI.net anyway. Our developers have been working on a new site design for us for quite some time now and yesterday we went live with several homepage changes that reflect the new changes in the works for the appliedi website. Don’t worry though we’re not anywhere near done as we’re migrating the site to a CMS application that will allow the site to be more dynamic and updated much more frequently.

Enabling WP Super Cache for WordPress on Windows Hosting
Feb 10th
PHP on Windows Server is gaining great popularity thanks to Windows Hosts that support PHP like us (Applied Innovations), the work Microsoft and Zend are doing together to make PHP even faster on Windows and the large number of PHP developers that realize Apache represents only a piece of the total website/ webserver market out there and want to really expand their market.
A few months ago I had enabled WP-cache on my site but in order to get it running I needed to make numerous tweaks. WP-SuperCache actually offers many more abilities over wp-cache and it supports Windows by default from install (well, almost).
Why install caching on your WordPress blog (or any blog)
WordPress dynamically generates your pages for you by making calls to the MySQL database server. If your site suddenly sees a HUGE increase in traffic or popularity it’s possible that the MySQL database server you’re using won’t be able to handle the traffic load. What would cause this to happen? Well, one could only be so lucky. Typically if your blog is posted on a site like digg.com or slashdot.org or hey maybe CNN.com even. Chances are your shared MySQL database server isn’t going to be able to handle the load and before long you’ll find either the server crashes or the hosting provider shuts down your DB to allow the other sites on the server to remain online. Not good.
Caching applications like wp-supercache, cache these dynamic requests as static content on your site and pull the content from that static cache instead of making each page that’s called get generated dynamically. Static content can be served EXTREMELY FAST in IIS compared to dynamic content and puts almost no load on the webserver. So by serving static content and limiting the calls to the database server you’re improving the site speed, lowering the load on the server and increasing the number of simultaneous site visitors your blog can handle.
Warning to the faint of heart.
NOTE: Before we go any further it’s important to understand that when we first install this plug-in it’s going to break our blog. We’re going to need to edit one line on one file to fix this. If for some reason after you install this plug-in if you need to manually uninstall it and aren’t able to access the admin interface here’s how to do that:
- Delete the entire folder wp-supercache in the folder wp-content/plugins in your blog directory.
- Delete the files advanced-cache.php and wp-cache-config.php in the folder wp-content in your blog directory.
Once you delete these files and folders the plug-in should be disabled. Go into the plugins menu and verify it’s removed and not listed there.
Remember, this has worked for me on 6 different installs of WordPress 2.7 on Windows 2003 and 2008 based servers but the configuration at Applied Innovations may be different than your host’s configuration.
You make these changes at your own risk and are solely responsible for anything you break.
How to install WP-SuperCache
Within the WordPress Dashboard you’ll select the Plugins option on the left
This will bring up the Manage Plugins page and expand the plugins options in the menu. From here we’ll select ‘Add new’
This will bring up the Install Plugins page with a search box at the top. For term we’ll type “super cache” and click the search button:
The search will run and list several plugins. We’ll select “WP Super Cache’” which as of this writing was at version 0.9 and we’ll click the install link.
This will bring up a pop up and we’ll click the install button to automatically install this plug-in.
Once the plug-in is installed we’re going to activate it but before we do that I need to warn you, that we may start getting errors on our blog. The reason we activate it and enable these errors is that activating the plug-in creates a file we need to edit in order to remove these errors. Without first activating (and/or enabling the plug-in) these files won’t be created and we’re not able to edit them to proceed.
So go ahead and activate it now but understand we’re going to get errors.
Activating the plug-in & editing it for Windows
When we activated this plug-in we probably got an error like this:
Warning: include(D:\Domains\domain.net\wwwroot/wp-contentD:/Domains/domainnet/wwwroot/wp-content/plugins/wp-super-cache/wp-cache-base.php) [function.include]: failed to open stream: Invalid argument in D:\Domains\domain.net\wwwroot\wp-content\plugins\wp-super-cache\wp-cache.php on line 49
Warning: include() [function.include]: Failed opening ‘D:\Domains\domain.net\wwwroot/wp-contentD:/Domains/domain.net/wwwroot/wp-content/plugins/wp-super-cache/wp-cache-base.php’ for inclusion (include_path=’.;C:\php5\pear’) in D:\Domains\domain.net\wwwroot\wp-content\plugins\wp-super-cache\wp-cache.php on line 49
As you recall I said that I had found this plug-in works “almost” out of the box on Windows. I believe each host has a different PHP configuration and at Applied Innovations you have to make a slight tweak to allow this app to work.
NOTE: If for some reason these files don’t exist for you yet. skip ahead and turn on the caching and then open the site again in your FTP client to edit the files. Remember if you need to completely disable this plug-in just delete the folder wp-supercache in wp-content/plugins. If you delete these files and it still doesn’t load you may need to delete the files advanced-cache.php and wp-cache-config.php in the wp-content folder as well.
Open your FTP client and download the file in wwwroot/(yourblogfolder)/wp-content/wp-cache-config.php
and edit the line like this (it should be line #7):
define( ‘WPCACHEHOME’, WP_CONTENT_DIR . "D:/Domains/YOURDOMAIN/wwwroot/wp-content/plugins/wp-super-cache/" ); //Added by WP-Cache Manager
to this:
define( ‘WPCACHEHOME’, "D:/Domains/YOURDOMAIN/wwwroot/wp-content/plugins/wp-super-cache/" ); //Added by WP-Cache Manager
Basically remove the “WP_CACHE_DIR .” portion and reupload the file.
So once we clean this up the paths we should get no more errors displayed.
Enabling WP Super Cache now that we’ve edited it.
From here click on settings and then WP Super Cache to bring up the Super Cache settings menu
Now we’re going to turn on the cache feature:
and click the update status button. WP Super Cache should now be enabled and you should now be caching your dynamic pages as static pages.
Verify caching is enabled.
Now we need to make sure our site loads and is caching. Go to your site in a browser and make sure the page comes up. Hit refresh after it first comes up and it should load faster. Do this on a few different pages and then click “view source” in your browser on one of your pages and scroll to the bottom you should see a couple lines like this at the very bottom:
<!– Dynamic Page Served (once) in 0.429 seconds –>
<!– Cached page generated by WP-Super-Cache on 2009-02-10 12:45:34 –>
You can go back into the WP Super Cache Settings and you’ll see stats on your cached content:
We’re all cached up!
So there you have it. We’ve enabled caching on your site. This article is a work in progress and may be updated or followed up from time to time. Any questions or problems though feel free to comment.