Performance problems commonly result from poor utilization of system resources. The major resources that you use that you may run out of are:
The challenge of tuning system performance is that performance problems arise as a result of the combination of all of these system components. The fact that there are a lot of components means that it can be difficult to diagnose the true cause of a problem, and you won't get very far if you are looking for the wrong problem.
Performance will always be curbed by the presence of some sort of bottleneck that throttles the rate at which the system can accomplish its work. Unfortunately, you may discover that fixing one bottleneck simply means that another bottleneck that you didn't know about becomes significant.