"Bottleneck" is a wonderfully descriptive term. It describes an artificial constraint on some form of communication, interaction, or transfer of information. And it leads one to believe that some magical combination of luck, money, and ingenuity can smash that bottleneck and let all good things flow.
The trouble with performance bottlenecks is that they can be tough to identify. Is it the CPU? The network? A clumsy bit of code? Often, the most obvious culprit is actually downstream of something larger and more mystifying. And when performance riddles remain unsolved, IT management may find itself faced with a Hobson's choice between admitting ignorance and making up excuses.
Fortunately, as with medical diagnoses or detective work, experience helps. Drawing on our years of sleuthing and experimentation, we've collected 15 of the most likely ailments -- and suggested remedies -- to help your IT operation track down and crack performance problems.
Some of these bottlenecks are more obvious than others. Most likely, you have something to say about some sneaky spoilers of your own (and we'd love to hear your tales about them). But by identifying common speed killers across IT disciplines, we hope to jumpstart your quest to create the highest performing infrastructure your resources will allow.
No. 1: It's probably not the servers
Server upgrades used to make all the difference, which is why the old saw "When all else fails, throw more hardware at it" persists today. That's still true in some cases. But how much of IT is really that compute-intensive? Generally, you can save a lot of time and money by turning your hairy eyeball away from server hardware. The lower end of the server spectrum has more than enough horsepower to handle everyday tasks.
Here's one concrete example. On a network of over 125 users, an elderly Windows domain controller appeared to be ripe for replacement. This server originally ran Windows 2000 Server and was upgraded to Windows Server 2003 some time ago, but the hardware remained unchanged. This HP ML330 with a 1Ghz CPU and 128MB of RAM was functioning as an Active Directory domain controller carrying all the AD FSMO roles, running DHCP and DNS services as well as running IAS (Internet Authentication Services).
Molasses, right? In fact, it actually did the job just fine. Its replacement was an HP DL360 G4 with a 3Ghz CPU, 1GB of RAM, and mirrored 72GB SCSI drives. Carrying all those services, it runs hardly any load at all -- and the performance difference is unnoticeable.
It’s easy to identify applications that will eat all your CPU and memory, but they tend to be pretty specialized. For almost everything else, the humble commodity box will do the trick.
No. 2: Speed up those queries
You can create the niftiest application in the world, but if access to back-end database servers creates a bottleneck, your end-users or customers won’t be happy. So fine-tune those database queries and maximize performance.
Three basic measures can help you improve query performance. First, most database products include tools (such as DB2 UDB for iSeries’ Visual Explain) that can dissect your query during development, providing feedback on syntax and the approximate timing of the various sections of the SQL statements. Using this information, locate the lengthiest portions of the query and break those down further to see how you might shorten the execution time. Some database products also include performance advice tools, like Oracle’s Automatic Database Diagnostic Monitor, that provide recommendations (such as suggesting you create a new index) to speed up queries.