High Load Systeams
“Powerful web applications that formerly might have taken weeks
or months to develop can be produced in a matter of days.”
-Tim O'Reilly, Founder of O'Reilly Media
The number of Internet users increases rapidly from year to year, which in its turn leads to overload of database servers. The systems are simply not able to process such a large number of user requests simultaneously, causing malfunction of Internet resources.
The projects that take into account the return speed balance of dynamic ("heavy") and static ("light") content are called high load projects. As a rule, they are unique and are implemented for specific needs.
It is rather difficult to outline the common principles of high load systems. Let’s try to answer the following questions first: How many unique visitors / hits are needed to consider the resource high load? What kind of system architecture falls under the definition of "high load"? What are the requirements for such an architecture?First of all, high load begins when one physical server becomes unable to handle data processing.
The stumbling block of high load projects lies in consecutive order of processing incoming requests. That is, every further request is pending until the system completes processing of all the previous data. Thus, the access to the page is delayed for all the users in a queue, and the time of delay is directly proportional to the amount of earlier requests and the generation time of the page.
In most cases, a few things need to be done to improve the performance of high load systems:
● Reconsider database scalability;● Extend data caching.
How It Work?
Increase of server throughput is needed to ensure high quality of handling multiple user requests in systems with high rps (request per second). However, increasing server throughput alone can not completely eliminate the major cause of overload, in addition to that, it involves high expenses.Scaling contributes to optimization of high load systems by partitioning database into structural elements according to certain criteria and their distribution between the servers. It can be either horizontal (the load is distributed between multiple servers) or vertical (increasing server performance).
Horizontal scaling is implemented by partitioning the data list. Replication and sharding help to isolate the load by splitting large data lists into logical sections according to the selected criteria. In-depth analysis and isolation of problem areas will help to increase the productivity of high load systems.
It will be optimal to start horizontal scaling with splitting the load between three servers:
2.Logic. Using lighttpd web server.3.Databases. MySQL and memcache are installed on a separate server with larger capacity and high speed RAM.
In case of insufficient number of servers it is possible to increase resources through hardware or software ( nginx, for example) load balancing, as well as through content synchronization settings with the selected frequency by cron.
Data caching is another way to reduce the load on system. Caching allows to facilitate server performance by reducing database queries. Storing information in cache has almost no boundaries, but it involves complex statistic calculations. It is recommended to use memcache while working with cache.
The conclusion is simple:
Most often it is necessary to combine several methods of optimization in real projects. There is no universal solution to reducing the load. The tips above are only general guidelines that will help you to "unload" your project. Following these guidelines will allow the server to cope with high loads, which in turn will contribute to its further development.You should also be very careful while choosing experts who will deal with your projects’ settings. Coping with high load systems demands a number of complex operations that should result in saving hardware and software resources and let you handle the process more efficiently, processing more user requests at the same time.
Experts in our company develop and improve high load systems, successfully solving the problem of servers with high load. We are always ready to open new opportunities for your web project, turning it into an elaborate high-speed system.