while (unhappyWithSitePerformance) {
executeLoadTest();
identifyBiggestBottleneck(); // e.g. what breaks first
fixIdentifiedBottleneck();
}
There is no blank silver bullet to provide. You should make sure your load test simulates realistic user behaviour and define the number of (virtual) users you want your server to handle within given answering time. Then tune your server until your goal is met.
Common parameters to look for are
- memory consumption
- CPU consumption (e.g. certain algorithms)
- I/O saturation - e.g. communication to the database, general HTTP traffic saturating the network adapter
- Database or backend answering time - e.g. sometimes you'll have to tune the backend, not the webserver itself.