My company runs its business on the Web, and we are redoing our primary site, which is community-based. Actually, we're pretty much creating a whole new site. Content has to be moved, and there's a dynamic aspect to that because the community is constantly adding more content. We want to use LAMP [Linux, Apache, MySQL, PHP/Perl/Python], but Linux is relatively new to us. The site now gets 50,000 hits a day, and we want that to increase twofold with the new site. What are some good options for redundancy, backups, etc.? Would a SUSE or Red Hat server OS be better, in terms of being fine-tuned better for a dynamic Web site and the company's LAMP stack offering and integration and support?
Accurate system sizing is never an easy thing to do, which is why there are experts in this field that make good money as sizing and capacity planning experts. One reason sizing is not usually done properly is because sufficient requirement details are not known up front. By knowing what you need, you are off to a great start. But before we figure out what the best solution is for you, we need to ask a few more questions.
You mention the hits per day but not how many static or dynamic pages are served per hit or what kind of files are out there. A web page being served by a client can have embedded objects within the page, and could have an equivalent of ten web objects or more. This is important information, as the content of static Web objects does not change between accesses and are therefore cacheable.
Let's talk computation cost. In terms of the CPU, the cost is dependent on the type of computation that is done. Are we just talking about simple Apache Modules and CGI functionality? Are there XML documents? Is there a back-end database and/or middleware requirements? You mention LAMP, which is a combination of web, database and middleware, but do not actually discuss any of the components outside of the web server. Consider these variables before proceeding with your upgrade.
So let's talk about what you may need. First and foremost: you can never have enough memory. Server performance degrades heavily when the system has insufficient memory. Generating dynamic content requires extra memory, so you'll need to determine the ratio of dynamic vs. static content. Serving static content can be (though it usually isn't) up to 100 times faster than dynamic content, particularly if your dynamic content is pulled from a database. Don't forget you need to report back the number of hits, files and pages that are sent back to the client.
There are many tools that help you size the capacity of your server. IBM provides web-based
tools in the IBM System
Workload Estimator. Using this tool, I made the following assumptions.
Here is what the system sized up for me:
I sized this based on a System p environment, a Linux system with the added benefit of being able to run AIX (IBM's version of Unix). You can also do the sizing on the System x (x86) server line. If I were you, I would use this tool and others like it to help size your environment. There are other resources on the web that should be able to help you size your environment, too.
Regarding SUSE or Red Hat, they are both more than capable of running any dynamic website/LAMP offerings. As companies that market to the enterprise, each is able to easily support these stable and well-known products, which have been running on Linux for as long as Linux has been around.
Good luck with your expansion!
This was first published in November 2007