Rumah >Operasi dan penyelenggaraan >Nginx >Enjin mana yang lebih baik, Apache HTTP atau Nginx?
Apabila kami memasukkan pautan web dalam penyemak imbas, penyemak imbas menghantar permintaan kepada pelayan yang sepadan berdasarkan protokol penghantaran HTTP(s)
dan pelayan memproses permintaan yang sepadan selepas menerimanya. Kembalikan maklumat yang sepadan kepada penyemak imbas, dan kemudian penyemak imbas menghuraikan kandungan dalam http
dan memaparkannya dalam bentuk halaman web.
Pelayan bertanggungjawab untuk menerima permintaan dan mengembalikan data yang sepadan selepas pemprosesan, yang boleh dibahagikan kepada bahagian perkhidmatan yang memproses sambungan http
dan bahagian aplikasi yang melaksanakan kandungan perkhidmatan (WordPress
menggunakan PHP
Menjana halaman yang diperlukan adalah kepunyaan bahagian aplikasi)
Tidak kira apa jenis aplikasi yang dijalankan oleh bahagian aplikasi, bahagian yang mengendalikan sambungan http
adalah hampir sama, jadi terdapat bahagian tengah yang secara khusus mengendalikan sambungan http
, pada masa ini yang paling biasa ialah Apache
dan Nginx
.
, yang nama rasminya ialah "Apache HTTP Server
", ialah perisian tengah pelayan sumber terbuka HTTP
Ia dilahirkan pada tahun 1995 dan pernah menjadi peneraju dalam perkhidmatan HTTP
Ia mempunyai sejumlah besar pengguna dan sumber komuniti yang kaya. Salah satu kelebihan hebat Apache
ialah ia mudah untuk disepadukan dengan perisian CMS seperti Wordpress
Anda boleh membina tapak web berasaskan CMS dengan hanya tetapan mudah.
Dari segi struktur dalaman, Apache
mengamalkan pendekatan pelbagai proses Setiap kali terdapat sambungan, satu proses akan dibuka untuk sambungan ini, khusus untuk memproses permintaan sambungan ini sehingga sambungan tamat. Kelebihan ini ialah:
Sambungan daripada pelanggan yang berbeza akan dibalas serta-merta tanpa mengganggu satu sama lain, dan sambungan lain tidak akan terjejas kerana satu perkhidmatan mengambil masa yang lama.
Tetapi kelemahannya juga jelas:
Apabila terdapat banyak akses serentak, Apache
akan mencipta sejumlah besar proses, menduduki terlalu banyak masa.
Penjadualan antara sejumlah besar benang juga akan menyebabkan banyak pembaziran kuasa pemprosesan CPU.
Ini menimbulkan masalah yang dipanggil C10K
, C ialah pelanggan, 10K bermakna 10,000, iaitu, tidak kira betapa tinggi prestasi dan lebar jalur rangkaian pelayan , Apache
semuanya sukar untuk mengendalikan lebih daripada 10,000 sambungan pada masa yang sama.
disebut sebagai Engine-X
Seperti Apache
, ia juga merupakan perisian tengah sumber terbuka untuk perkhidmatan HTTP
Ia dilahirkan pada tahun 2004. Nginx
mempunyai sejarah yang lebih pendek daripada Apache
, tetapi kerana ia lambat datang, Nginx
mempelajari pelajaran Apache
dan mempertimbangkan kecekapan mengendalikan sejumlah besar sambungan pada peringkat reka bentuk awal, menyelesaikan masalah seperti C10K
dan masalah lain yang timbul apabila skala Internet berkembang.
Nginx
mengamalkan 非阻塞IO
dan pendekatan dipacu mesej tak segerak, iaitu, menggunakan gelung dalam urutan yang dipanggil worker
untuk memproses sambungan dalam baris gilir bertanya. Bergantung pada perkakasan, berbilang worker
benang boleh ditetapkan untuk menggunakan sepenuhnya sumber teras CPU
.
Selesaikan masalah penggunaan memori yang berlebihan dan kecekapan penjadualan yang rendah apabila memproses sejumlah besar sambungan, sambil juga menggunakan sepenuhnya semua teras CPU. Keupayaan untuk mengendalikan sambungan serentak adalah 10 hingga 100 kali ganda daripada Apache
pada perkakasan yang sama.
Tetapi Nginx
kaedah ini bukan tanpa kekurangannya.
Apabila prestasi teras tunggal pelayan adalah lemah, tapak web dinamik berdasarkan CMS mungkin mengambil masa yang lama untuk melaksanakan permintaan Pada masa ini, permintaan daripada pelanggan lain tidak akan segera dilaksanakan. Ia akan menjadi lebih jelas apabila CPU
terdapat lebih sedikit teras dan worker
benang tidak mencukupi.
Nasib baik, prestasi pelayan semakin kukuh dan kukuh Di bawah pimpinan AMD
, bilangan CPU
teras juga semakin bertambah cukup untuk menebusnya Dan kelebihan kecekapan tinggi semakin ketara. Nginx
Kuasa pemprosesan adalah 10-100 kali terhad Adakah ia akan disekat oleh tugas yang kompleks. Adakah mungkin untuk menetapkan tahap kesukaran menjadi agak mudah dan agak kompleks ? Komuniti mempunyai sumber yang agak sedikitApache Nginx
telah terus meningkat, dan pada tahun 2019 ia telah mencapai tahap yang sama seperti Nginx
. Untuk tapak web yang besar dengan bilangan lawatan yang banyak, anda dapat melihat bahawa semakin banyak bilangan lawatan, semakin tinggi nisbah Apache
. Ini juga mengesahkan prestasi unggul Nginx
apabila mengendalikan sejumlah besar akses. Nginx
Selain digunakan sebagai pelayan HTTP, fungsi proksi terbaliknya yang berkuasa juga digunakan secara meluas sebagai pelayan pengimbangan beban hadapan, secara beransur-ansur menggantikan berasaskan perkakasan peranti pengimbangan beban. Nginx
Nginx
akan memajukan permintaan ke pelayan bahagian belakang mengikut peraturan tertentu (polling, pencincangan IP, rawak keutamaan) selepas menerima meminta pelayan akhir untuk mencapai pengagihan beban purata atau wajaran pada berbilang pelayan. Nginx
Pada masa yang sama, sebagai pengimbangan beban bahagian hadapan, ia juga boleh cache data yang dikembalikan oleh bahagian belakang untuk melegakan tekanan pada pelayan bahagian belakang. Bahagian hadapan menggunakan Nginx
untuk pengimbangan beban untuk mengehadkan bilangan sambungan ke setiap pelayan, dan ia adalah perkara biasa bagi pelayan bahagian belakang menjalankan Apache
.
Pemimpin industri pengimbang beban perkakasanF5 networks
memperoleh Nginx
pada 2019 dan melancarkan penyelesaian pengimbangan beban Nginx+
yang termasuk perkhidmatan berbayar.
Atas ialah kandungan terperinci Enjin mana yang lebih baik, Apache HTTP atau Nginx?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!