Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Enjin mana yang lebih baik, Apache HTTP atau Nginx?

Enjin mana yang lebih baik, Apache HTTP atau Nginx?

王林
王林ke hadapan
2023-05-11 15:49:06903semak imbas

Perisian tengah HTTP

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.

Apache

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

Model pemprosesan dalaman Apache

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.

Nginx

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.

Model pemprosesan dalaman Nginx

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

Perbandingan komprehensif

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

Dalam beberapa tahun kebelakangan ini, bahagian pasaran

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

Pengimbangan Beban

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

Beberapa pelayan bahagian belakang boleh dikonfigurasikan dalam

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam