Home>Article>Operation and Maintenance> Why can nginx achieve high concurrency?

Why can nginx achieve high concurrency?

步履不停
步履不停 Original
2019-06-20 16:00:22 5880browse

Why can nginx achieve high concurrency?

Why nginx can have high concurrency

Simply speaking, it isasynchronous,non-blocking, usingepollanda lot of underlying codeoptimization.

In a little more detail, it’s the design of nginx’sSpecial Process ModelandEvent Model.

Video Course Recommendation →:"Concurrency Solution for Tens of Millions of Data (Theory and Practice)"

Process model

nginx adopts a master process and multiple worker processes.

  1. 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.

  2. The master process is also responsible for monitoring the status of the woker to ensure high reliability

  3. 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.

Event model

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 theNginx Tutorialcolumn 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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:How to load balance nginx Next article:How to load balance nginx