Last Modified: 10.10.2012
Any hardware, software or network system is created to withstand a certain load. We are not surprised when a car tier is tested for maximum permissible speed and sold with these indications and cautions. But we can hardly find the same attitude to software and hardware.
Companies are rare to test server for maximum load and estimate maximum allowable traffic before bringing the project to the market. But the principal errors and weak points can be easily recognized during testing, what allows to increase server performance highly.
We shall talk about why an ordinary web breaks because during testing or real peak loads.
The possible reasons can be as follows.
- Insufficient memory for normal performance of many web server and database processes. In most systems, each query made by a browser creates an individual web server process. Usually the Apache and PHP processes module together consume about 20-30 MB. At peak loads, too many processes run simultaneously (sometimes more than a few hundred processes). As a result, the processes are swapped which in its turn impedes the database operation and the overall system performance degrades abruptly.
- Insufficient processor resources required for multitasking and the adequate response time. This may happen if the number of simultaneously served requests exceeds the server processing power. Even if there is enough memory and the problem is not obvious yet, you may find that the system stopped responding timely: the time of respond increased and the database is overloaded with a great number of requests. In the end, each user will fail to open page on your server.
- Insufficient database performance with concurrent requests; server resources cannot be used at full extent. This situation often occurs with MySQL. Note that MySQL usually uses the MyISAM table format which is easier and efficient. However, many simultaneous requests make the database an extremely weak spot in the overall system performance. When inserting or updating data or executing some other requests, tables are exclusively locked thus persuading all requests to be executed in series rather than in parallel. As a result, when load increases, page generation takes much more time than usually. Projects that use Oracle or MSSQL, MySQL / InnoDB are far more stable in this aspect.
- The imbalance of the web system at peak loads and quick performance regression even at low stresses. The whole system experiences overloads at peak loads. In addition to the above problems, the disc subsystem can cause problems. If one of the components faces the performance degradation, the whole system performance declines, other system components underperform and, as a result, the system functions much worse or even halts.