Perbezaan Nginx dengan Apache

September 2, 2015 0 Comments Server 689 Views
Perbezaan Nginx dengan Apache

Apache dan Nginx merupakan web server atau pelayan web. Ia menggunakan protokol HTTP pada port 80 untuk sesebuah server mampu dicapai pengunjung di atas talian. HTTP (HyperText Transfer Protocol) digunakan untuk memindahkan maklumat dari web server (pelayan web) ke web browser (pelayar web) seperti Chrome, Internet explorer, Mozilla dan Safari

Apache atau Nginx bekerja untuk menterjemah segala isyarat dan skrip belah server seperti PHP, ASP, Phyton, Ruby, Perl serta menyimpan atau mengeluarkan segala maklumat dalam pengkalan data seperti MySQL apabila diminta pengunjung.

Kebanyakan laman web di dunia menggunakan sistem operasi yang berasaskan Linux, Apache sebagai web server, MySQL sebagai pengkalan data dan PHP sebagai bahasa sebelah server. Kombinasi ini disebut sebagai LAMP (Linux – Apache – MySQL – PHP).

Kini timbul pula istilah baru apabila Nginx (disebut Engine-X) menggantikan Apache iaitu LEMP (Linux – Engine-X – MySQL – PHP).

Kebanyakan pengguna mula beralih arah dari Apache ke Nginx sebagai web server mereka. Dari pertengahan 2007 sehingga ke Julai 2015, graf untuk web server yang aktif atau tidak aktif menyaksikan peningkatan penggunaan Nginx dari tahun ke tahun. Graf dan jadual angka boleh dirujuk di sini http://news.netcraft.com

Nginx juga digunakan oleh laman web, seperti Netflix, Hulu, Pinterest, CloudFlare, Airbnb, WordPress.com, GitHub, SoundCloud, Zynga, Eventbrite, Zappos, Media Temple, Heroku, RightScale, Engine Yard dan MaxCDN seperti yang didakwa oleh mereka (www.nginx.org)

Nginx boleh dianggap sebagai light web server atau pelayan web yang ringan yang mementingkan kelajuan, ringkas dan mudah. Ia umpama platform Ghost berbanding Apache seperti ‘Joomla’ yang padat dan mempunyai ribuan modul dan sambungan.

Nginx berbeza dengan Apache dari segi penggunaan sumber seperti CPU dan RAM. Kemampuan Nginx melayan puluhan ribuan permintaan dari komputer client kerana prosesnya yang berbeza dengan Apache.

Masalah mula timbul apabila terdapat 10 ribu permintaan dalam masa yang sama yang dikenali sebagai C10K (concurrent 10,000).

Apache-LogoUntuk program Apache, apabila ia berlaku ia akan menyebabkan kelewatan di sebelah komputer client (pengguna), boleh jadi paparan web terlalu perlahan untuk dimuat turun.  

Faktor ini disebabkan senibina Apache menggunakan thread (aturan arahan untuk menjalan sesuatu tugasan). Dimana cara ia bekerja adalah untuk setiap satu sambungan/permintaan dari komputer client, satu thread khusus akan dibina. Thread ini akan melaksanakan permintaan ini sehingga selesai kemudian dimusnahkan.

Proses membina, melaksanakan tugasan dan memusnahkan thread memerlukan sumber RAM, CPU untuk bekerja. Ia akan menjadi masalah bila barisan thread yang terlalu panjang disebabkan permintaan yang terlalu banyak dalam masa yang sama. Kekerapan yang banyak untuk membina dan memusnahkan ini menyebabkan penggunaan CPU melambung naik, kemungkinan menyebabkan seluruh proses terhenti terus.

nginxBerbeza dengan Nginx dimana ia memang direka khusus untuk mengatasi permasalahan C10K iaitu satu kekurangan di pihak Apache. Ia tidak lagi menggunakan satu thread (aturan arahan) yang khusus untuk satu permintaan client, sebaliknya ia menggunakan worker.

Hanya satu thread sahaja bertindak sebagai Master yang mengawal worker di bawahnya. Worker pula mampu melayani ribuan permintaan client dalam masa yang sama. Permintaan yang berjaya diselesaikan tidak dimusnahkan malah ia akan dihantar kembali ke dalam (run-loop) untuk melayani permintaan yang lain.

Nginx juga disebut sebagai:

  • Event-driven – Tumpuan diberi kepada permintaan (sambungan) oleh pengguna (client)
  • Asycnchronous – Melayani beribu sambungan client dalam satu masa. Tanpa perlu menunggu, membina dan memusnahkan proses yang sedia ada.
  • Single thread – Hanya memerlukan satu thread yang bertindak sebagai Master iaitu mengawal worker, isyarat yang diterima dan memaklumkan kepada worker. Manakala bilangan workers bertindak untuk berinteraksi dengan server dan client.
  • Non-blocking I/O – Apabila pengguaan CPU terlalu banyak, ia boleh menyebabkan  Input dan output perlahan dan seterusnya terhalang. Jika ia berlaku Nginx akan mengalih kepada permintaan pengguna atau proses yang lain. Sehinggalah CPU kembali normal, dan sambungan yang terhenti disambung semula.    

 

Walaupun setelah apa yang dikatakan di atas, Apache dengan sejarah yang panjang adalah satu program yang stabil dan mempunyai banyak modul, dengan jumlah pembangun (developer) yang menyumbang dan membangunkannya sehinga kini.  Untuk versi 2.2 (Apache2), modul multi-processing (MPM) telah disertakan untuk mengatasi masalah C10K ini.   

 

About author

Related articles

0 Comments

No Comments Yet!

You can be first to comment this post!

Leave a Reply