Mengapa Nginx begitu cepat?


31

Bagaimana cara situs seperti rambler melayani konten dinamis begitu cepat? Bahkan lebih cepat dari Yahoo (yang memiliki server di negara saya - Asia Tenggara; rambler tidak).

Apakah ini murni kemampuan Nginx? Di mana saya harus mencari tahu tentang kemampuan seperti itu?

Cukup banyak pemula di sini, saya percaya bahwa serverfault.com jika dilayani dari Nginx akan jauh lebih cepat IIS 7 (dengan asumsi waktu akses db sama dalam kedua kasus). Apakah ini asumsi yang adil?

Edit:

Posting dari Karl menggunakan Nginx di depan IIS7


Perhatikan bahwa serverfault.com sudah menggunakan Nginx (menurut Wappalyzer ). : P
WillS

Jawaban:


26

Anda dapat melihat presentasi ini untuk ikhtisar internal nginx. Perbedaan utama adalah penanganan permintaan yang tidak sinkron daripada menggunakan utas seperti yang dilakukan Apache. Anda mungkin melihat dokumentasi ini juga.


2
Jawaban yang bagus untuk arsitektur nginx dan masalah C10K. Namun, saya mengerti pertanyaan OPs tentang persepsi kecepatan memuat halaman, yang tidak ada hubungannya dengan nginx.
Jesper M

Apa yang sebenarnya dimaksud dengan "asinkron"? Saya selalu berpikir bahwa itu berarti dieksekusi di utas terpisah.
Ivan

Asinkron berarti Nginx bertindak selalu sebagai proxy, bahkan dengan Php: Nginx mendapatkan permintaan HTTP, kirim ke server Php TAPI tidak mengunci / menunggu untuk mengirim respons HTTP. Itu sebabnya Anda melihat perbedaan (kecepatan, CPU / RAM) untuk situs web lalu lintas tinggi. Tetapi tidak ada peningkatan kinerja untuk beberapa permintaan (yang menyangkut 95% dari internet ....), tetapi Nginx itu keren ;-)
Thomas Decaux

21

Bagaimana cara situs seperti rambler melayani konten dinamis begitu cepat? ... Apakah ini murni kemampuan Nginx? Di mana saya harus mencari tahu tentang kemampuan seperti itu?

Ini tidak ada hubungannya dengan server web yang digunakan - baik nginx, IIS dan Apache 'cukup cepat' dan umumnya melakukan pekerjaan mereka dalam milidetik. nginx jauh lebih cepat daripada Apache, tetapi ini hanya berarti pemilik situs akan membutuhkan lebih sedikit server untuk bagian penyajian web - nginx tidak mentransfer data lebih cepat kepada Anda.

Bagian yang kurang penting adalah kecepatan sisi server , yaitu waktu yang diperlukan untuk membuat HTML. Bagian yang lebih penting adalah kinerja 'frontend' , yang saya maksud adalah HTML, CSS, Javascript dan Gambar, jumlah ini, ukuran ini, dan pengiriman yang tepat (kompresi HTTP, caching) ini.

Tentu saja kecepatan sisi server masih penting, saya tidak mengatakan itu harus diabaikan atau tidak masalah. Tetapi biasanya itu adalah bagian terkecil yang dirasakan dari kecepatan pengguna akhir - pekerjaan di sisi server sering dilakukan dalam waktu kurang dari 500 milidetik, tetapi halaman tersebut tidak siap sebelum 3.000 - 5.000 milidetik berlalu. Sebagian besar waktu ini digunakan untuk mengunduh sumber daya frontend (CSS, Javascript, Gambar).

Steve Souders melakukan pekerjaan aslinya ketika di Yahoo, dia sekarang bekerja di Google. Buku pertamanya "Situs web berkinerja tinggi" adalah titik awal terbaik untuk mempelajari lebih lanjut tentang membuat situs web cepat. Bahan yang sama yang ada di bukunya dapat ditemukan dalam ceramah video ini , dan aturan desain ini . Namun, saya menemukan bahwa buku ini cepat dibaca, dan lebih mudah dipahami.

Anda dapat menjalankan situs melalui penguji WebPageTest.org - yang akan memberi Anda perasaan yang baik untuk bagian depan situs-situs ini, dan mengapa situs tersebut lebih cepat atau lebih lambat.

Saya percaya bahwa serverfault.com jika dilayani dari Nginx akan jauh lebih cepat dengan IIS 7 (dengan asumsi waktu akses db sama dalam kedua kasus). Apakah ini asumsi yang adil?

Tidak, itu salah paham. :-)


18

Nginx lebih sering digunakan untuk menyeimbangkan beban aplikasi lain / server dan menyajikan konten statis daripada yang digunakan sebagai server lengkap.

Misalnya Anda dapat menulis aplikasi menggunakan salah satu dari banyak kerangka kerja python, dan menjadikan nginx sebagai ujung depan dari banyak contoh itu (mungkin tersebar di beberapa mesin). Dalam hal ini, nginx server memiliki dua tujuan: menangani permintaan untuk konten statis seperti gambar dan stylesheet secara langsung (dan karena desainnya ia melakukan ini dengan sangat cepat), dan ia mengirimkan permintaan dinamis ke aplikasi yang menyebarkan beban di antara semua instance yang ia ketahui tentang . Ini juga merupakan konfigurasi yang sangat populer di komunitas Ruby on Rails.

Ada dua alasan lain mengapa Rambler mungkin tampak lebih cepat bagi Anda daripada layanan Yahoo lokal. Pertama, Yahoo PoP lokal mungkin tidak memiliki sumber daya yang cukup untuk melayani jumlah permintaan yang semakin cepat sehingga mungkin hanya menambahkan lebih banyak perangkat keras (dengan asumsi skala perangkat lunak dengan baik dengan cara ini) akan mempercepatnya (tetapi, mungkin, perbedaannya tidak sebanding dengan biaya pemeliharaan kit tambahan atau Yahoo akan melakukan ini). Perbedaan besar lainnya mungkin ada di back-end daripada server web - kedua layanan tidak diragukan lagi memiliki pengaturan basis data yang sangat berbeda dan bahkan jika tidak, mereka tidak akan berjalan dengan variasi permintaan yang persis sama (dan jumlah perangkat keras yang didedikasikan untuk archicecture basis data akan memiliki efek yang signifikan juga).

Menganalisis mengapa satu layanan lebih cepat dari yang lain (umumnya atau dalam keadaan tertentu) biasanya tidak akan menghasilkan jawaban tunggal yang sederhana - ada banyak cara untuk merancang aplikasi yang dimaksudkan untuk skala ke ribuan pengguna, masing-masing dengan memiliki keuntungan, masalah & kompromi dan bahkan jika Anda memfaktorkan semua perbedaan itu di luar setiap situs akan memiliki dinamika basis pengguna yang berbeda, ditambah ada masalah jaringan di luar kendali desainer juga.


3

nginx mungkin tetapi arsitektur yang lebih skalabel dengan load balancing yang wajar di depan server konten statis / generator konten dinamis. jika Anda benar-benar ingin mendapatkan pengalaman pengguna akhir yang hebat, Anda mungkin harus memindahkan konten lebih dekat ke 'bola mata' - gunakan beberapa CDN.

jika Anda tertarik pada subjek - lihat ini dan itu dan .. well - google; -]


2

Situs terbaik menggunakan akselerator aplikasi seperti ZXTM Zeus - mereka dapat menyimpan respons dinamis dalam banyak kasus yang jelas sangat bermanfaat.



0

Saya mengalami kesulitan melihat serverfault jauh lebih cepat (SO mungkin memiliki masalah pemuatan karena lalu lintas mungkin?) Karena ini sudah memuat halaman instan di sini di UE atas rute saya. Ini jauh lebih cepat dan lebih responsif daripada kebanyakan situs berita lokal dan sebagainya.

Sebagian besar masalah yang jelas dengan waktu muat dan latensi berasal dari antara server dan imo pengguna akhir dan bukan kinerja server yang sebenarnya (kecuali seseorang mengukur atau merancang sesuatu yang salah). Situs yang berbeda dapat dialihkan dengan cara yang berbeda dan ada kemungkinan besar bahwa situs negara-lokal bagi saya memiliki latensi yang lebih besar daripada sesuatu di planet ini - semuanya tergantung pada begitu banyak variabel sehingga Anda tidak dapat mengatakan bahwa itu dapat dipecahkan hanya dengan layanan tingkatkan / alihkan kecuali Anda tahu di situlah masalah untuk penggunaan tertentu (r) adalah ...

Jelas caching dari berbagai jenis di server membuat perbedaan besar tetapi semua situs ini sudah melakukannya sejauh yang saya tahu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.