Are you properly configuring, tuning, and maintaining your production server for your Alpha Five Web applications?
While a well-designed Web database application can fundamentally increase the competitiveness and efficiency of your company/organization, it does require an investment, no matter how large or small your business is. And, how many of you have dedicated valuable time to building your application, only to deploy your application and find out that performance is lackluster? I don't have to tell you about what a disappointing experience this can be.
While we work very hard to make the Alpha Five Application Server correct, fast, robust, and efficient, deploying an application to underpowered or unmaintained systems can have a tremendous negative effect on your user experience.
That's why I've written an article that discusses some of the concepts involved in the proper configuration, tuning, and maintenance of a production server for your Alpha Five Web applications. The goal is to explain the concepts and why they are important, and to get you thinking about factors that might needlessly limit your system.
To start off, today I'll discuss hardware configuration, and later this week move on to cover initial tuning and software configuration, as well as thoughts on maintenance and baseline analysis.
As a side note, always keep in mind that correctness, robustness, and performance -- the three pillars of a useful application -- are each essential to a successful implementation, and should be prioritized in that order. While you need all three, the following blog posts will be focusing on performance.
First and foremost, you need to install your software on a server that will give you the maximum power for your money. Such a server will have a fast processor, a lot of RAM (memory), and will include several fast hard drives. Fortunately, prices on systems are constantly going down, and the power of systems is growing tremendously.
It would be a mistake to scrimp on hardware. It's easy to do though, isn't it? Just look at those bargain systems for under $1,000! I can save so much money! Actually, no you can't. Having an underpowered server will cost you in many ways: labor through lost productivity, customer loyalty will be lost through delays in service, or worse, customers abandoning your site in favor of a competitor.
How much should you spend? That's a difficult question to answer because you might not need the processing power immediately, or you might not have a return on investment (ROI) for an internal system that justifies a large expense. In six months, prices and available hardware will have changed significantly, and any hard numbers I give you will be irrelevant. Don't worry, we'll try anyway.
How long should you keep a system before upgrading it? Systems don't tend to wear out. They become obsolete within six to eight months. You probably want to plan an annual upgrade of your server, and budget your purchase so that your savings assumes this. So what should you buy? You can get some very nice performing servers for about $2,000.
For an important high-volume application, I priced a configuration on the Dell Small Business site today that included a Xeon® X5460 3.16GHz processor with a 2.6M cache and a 133MHz FSB (front side bus). It included 24MB of RAM, four 450MB serial-attach SCSI drives with 15K RPM and 3Gbps transfer rate handled by a SATA/SAS Controller with RAID 6 support and the Windows 2008 Server Standard Edition operating system.
The system I configured (a Dell PowerEdge T300) comes in at about $5,000. Does that sound like a lot? More importantly, did you understand all of the jargon in the second sentence? If you did understand it, you don't really need this series of posts. I'd suggest saving your time for more interesting reading ;).
As for the rest of us, let's start reviewing this system.
The CPU (central processing unit) is the brain of the computer. The better systems will have multiple cores (processors) on a single chip. The one I chose for the configuration above has four. These processors share the work by taking turns running applications.
Note: Alpha Five does not use more than one processor by itself (although the operating system and other processes will), and is specifically programmed to try to stay as close to one processor at all times as is possible. This is referred to as "processor affinity." We'll discuss this more in the "tuning" section.
A processor runs at a speed (referred to as clock speed) that is generally measured (these days) in Gigahertz (roughly billions of cycles per second). Adding numbers, reading memory, and making comparisons (the kinds of things processors do) will take at least one of these cycles and maybe more. Faster is better. The processor above runs at 3.16 GHz. Not bad!
The processor's cache is a very fast kind of memory that is used as a scratch area to help keep the processor busy as much as possible. Cache memory is much more expensive than regular memory (RAM) so you don't get as much to work with. A processor must access disk drives (storage) to load programs, and read and write data. It must depend on memory (think of it as a bigger scratch pad) to process instructions and manipulate data values.
Access to RAM is much faster than a disk drive, so it's a useful place to store frequently used values. A processor cache is significantly faster than RAM, and is used to store instructions and data values for a short period of time. The processor above has 2.6 megabytes (roughly millions), and can make good use of it.
The last number on the description of the processor is the speed of the bus. A bus is conceptually a bunch of wires that run between the processor, the memory, and adapter cards (or onboard adapters) that handle things such as the disk drives, displays, and network access (not to mention the keyboard and mouse).
This particular computer has what is referred to as a front-side bus (FSB), and this has its own clock speed that controls how fast data can move back and forth between all of these adapters and the processor. In the case of our configuration above, the speed is 1333MHz (roughly millions of cycles per second). Again, faster is better.
Stay tuned until tomorrow, because I'll delve more deeply into the specifics of the PowerEdge's memory.