nginx为什么比apache快?
先总的说几个概念:
1:在高并发的情况下nginx比apache快,低并发体现不明显
2:快的原因得益于nginx的epoll模型
apache是多线程或者多进程,在工作的时候,当来了一个http响应,一个进程接收(listen)–>识别处理—>返回请求,在此过程中,一个进程全部处理,apche 对于套接字的I/O,读或者写,但是读或者写都是阻塞的,阻塞意味着进程就得挂起进入sleep状态,那么一旦连接数很多,Apache必然要生成更多的进程来响应请求,一旦进程多了,CPU对于进程的切换就频繁了,很耗资源和时间,所以就导致apache性能下降了,说白了就是处理不过来这么多进程了。
Nginx采用epoll模型,异步非阻塞。对于Nginx来说,把一个完整的连接请求处理都划分成了事件,一个一个的事件。比如accept(), receive(),磁盘I/O,send()等,每部分都有相应的模块去处理,一个完整的请求可能是由几百个模块去处理。真正核心的就是事件收集和分发模块,这就是管理所有模块的核心。
只有核心模块的调度才能让对应的模块占用CPU资源,从而处理请求。拿一个HTTP请求来说,首先在事件收集分发模块注册感兴趣的监听事件,注册好之后不阻塞直接返回,接下来就不需要再管了,等待有连接来了内核会通知你(epoll的轮询会告诉进程),cpu就可以处理其他事情去了。
一旦有请求来,那么对整个请求分配相应的上下文(其实已经预先分配好),这时候再注册新的感兴趣的事件(read函数),同样客户端数据来了内核会自动通知进程可以去读数据了,读了数据之后就是解析,解析完后去磁盘找资源(I/O),一旦I/O完成会通知进程,进程开始给客户端发回数据send(),这时候也不是阻塞的,调用后就等内核发回通知发送的结果就行。
整个下来把一个请求分成了很多个阶段,每个阶段都到很多模块去注册,然后处理,都是异步非阻塞。异步这里指的就是做一个事情,不需要等返回结果,做好了会自动通知你。
在网上找到了一个例子:
可以举一个简单的例子来说明Apache的工作流程,我们平时去餐厅吃饭。餐厅的工作模式是一个服务员全程服务客户,流程是这样,服务员在门口等候客人(listen),客人到了就接待安排的餐桌上(accept),等着客户点菜(request uri),去厨房叫师傅下单做菜(磁盘I/O),等待厨房做好(read),然后给客人上菜(send),整个下来服务员(进程)很多地方是阻塞的。
这样客人一多(HTTP请求一多),餐厅只能通过叫更多的服务员来服务(fork进程),但是由于餐厅资源是有限的(CPU),一旦服务员太多管理成本很高(CPU上下文切换),这样就进入一个瓶颈。
再来看看Nginx得怎么处理?餐厅门口挂个门铃(注册epoll模型的listen),一旦有客人(HTTP请求)到达,派一个服务员去接待(accept),之后服务员就去忙其他事情了(比如再去接待客人),等这位客人点好餐就叫服务员(数据到了read()),服务员过来拿走菜单到厨房(磁盘I/O),服务员又做其他事情去了,等厨房做好了菜也喊服务员(磁盘I/O结束),服务员再给客人上菜(send()),厨房做好一个菜就给客人上一个,中间服务员可以去干其他事情。
整个过程被切分成很多个阶段,每个阶段都有相应的服务模块。我们想想,这样一旦客人多了,餐厅也能招待更多的人。
更多Nginx技术文章,请访问Nginx使用教程栏目!
Atas ialah kandungan terperinci nginx为什么比apache快. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Nginxisessentialformodernwebapplicationsduetoitsrolesasareverseproxy, loadbalancer, andwebserver, menawarkanHighperformanceAndscalability.1) itactsasareverseproxy, enhancingsecurityandperformanceCachingandbalancing.2)

Untuk memastikan keselamatan laman web melalui NGINX, langkah -langkah berikut diperlukan: 1. Buat konfigurasi asas, tentukan sijil SSL dan kunci persendirian; 2. Mengoptimumkan konfigurasi, membolehkan HTTP/2 dan OCSPSTAPLING; 3. Debug kesilapan biasa, seperti laluan sijil dan isu suite penyulitan; 4. Cadangan Pengoptimuman Prestasi Aplikasi, seperti menggunakan Let'sEncrypt dan Sesi Multiplexing.

Nginx adalah HTTP berprestasi tinggi dan pelayan proksi terbalik yang baik untuk mengendalikan sambungan serentak yang tinggi. 1) Konfigurasi Asas: Dengar port dan sediakan perkhidmatan fail statik. 2) Konfigurasi Lanjutan: Melaksanakan proksi terbalik dan mengimbangi beban. 3) Kemahiran Debugging: Periksa log ralat dan uji fail konfigurasi. 4) Pengoptimuman Prestasi: Aktifkan pemampatan GZIP dan laraskan dasar cache.

Cache Nginx dapat meningkatkan prestasi laman web dengan ketara melalui langkah -langkah berikut: 1) Tentukan kawasan cache dan tetapkan laluan cache; 2) Konfigurasikan tempoh kesahihan cache; 3) menetapkan dasar cache yang berbeza mengikut kandungan yang berbeza; 4) mengoptimumkan penyimpanan cache dan mengimbangi beban; 5) Kesan Cache Memantau dan Debug. Melalui kaedah ini, cache Nginx dapat mengurangkan tekanan pelayan back-end, meningkatkan kelajuan tindak balas dan pengalaman pengguna.

Menggunakan DockerCompose dapat memudahkan penggunaan dan pengurusan Nginx, dan skala melalui Dockerswarm atau Kubernetes adalah amalan biasa. 1) Gunakan dockercompose untuk menentukan dan menjalankan bekas Nginx, 2) melaksanakan pengurusan kluster dan skala automatik melalui Dockerswarm atau Kubernetes.

Konfigurasi lanjutan Nginx boleh dilaksanakan melalui blok pelayan dan proksi terbalik: 1. Blok pelayan membenarkan beberapa laman web dijalankan dalam satu keadaan, setiap blok dikonfigurasi secara bebas. 2. Proksi terbalik memajukan permintaan ke pelayan backend untuk merealisasikan beban mengimbangi dan pecutan cache.

Penalaan prestasi Nginx boleh dicapai dengan menyesuaikan bilangan proses pekerja, saiz kolam sambungan, membolehkan mampatan GZIP dan protokol HTTP/2, dan menggunakan cache dan mengimbangi beban. 1. Laraskan bilangan proses pekerja dan saiz kolam sambungan: worker_processesauto; peristiwa {worker_connections1024;}. 2. Dayakan Mampatan GZIP dan HTTP/2 Protokol: http {gzipon; server {listen443sslhttp2;}}. 3. Gunakan pengoptimuman cache: http {proxy_cache_path/path/to/cachelevels = 1: 2k

Peningkatan keselamatan nginx dapat dicapai melalui langkah -langkah berikut: 1) Pastikan semua lalu lintas dihantar melalui HTTPS, 2) Konfigurasi pengepala HTTP untuk meningkatkan keselamatan komunikasi, 3) menubuhkan ssl/tls yang disulitkan penghantaran, 4) melaksanakan kawalan akses dan mengehadkan untuk mencegah serangan. Langkah -langkah ini dapat meningkatkan keselamatan pelayan Nginx dengan berkesan.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna