Home > Article > Operation and Maintenance > Why can nginx achieve high concurrency?
Simply speaking, it isasynchronous,non-blocking , using epoll and a lot of underlying code optimization.
In a little more detail, it’s the design of nginx’s Special Process Model and Event Model.
Video Course Recommendation →: "Concurrency Solution for Tens of Millions of Data (Theory and Practice)"
nginx adopts a master process and multiple worker processes.
The master process is mainly responsible for collecting and distributing requests. When a request comes, the master starts a worker process to handle the request.
The master process is also responsible for monitoring the status of the woker to ensure high reliability
The woker process is generally set to match the number of cpu cores consistent. The woker process of nginx is different from apache. The apche process can only handle one request at the same time, so it will open many processes, hundreds or even thousands. The number of requests that nginx's woker process can handle at the same time is only limited by memory, so it can handle multiple requests.
nginx is asynchronous and non-blocking.
Every time a request comes in, there will be a worker process to process it. But it’s not the entire process. To what extent? Process where blocking may occur, such as forwarding the request to the upstream (backend) server and waiting for the request to return. Then, the processing worker will not wait so stupidly. After sending the request, he will register an event: "If the upstream returns, tell me and I will continue." So he went to rest. At this time, if another request comes in, he can quickly handle it in this way. Once the upstream server returns, this event will be triggered, the worker will take over, and the request will continue to go down.
The working nature of the web server determines that most of the life of each request is in network transmission. In fact, not much time is spent on the server machine. This is the secret to solving high concurrency with just a few processes.
For more Nginx related technical articles, please visit the Nginx Tutorial column to learn!
The above is the detailed content of Why can nginx achieve high concurrency?. For more information, please follow other related articles on the PHP Chinese website!