Saya memiliki server baru untuk bermain, dan saya menatap kanvas kosong. Saya dapat meletakkan apa pun yang saya inginkan di atasnya. Sementara saya merasa nyaman dengan Apache, saya terus mendengar bagaimana nginx dapat menangani lebih banyak lalu lintas daripada Apache, dengan faktor 10, 100, bahkan lebih. Bukan hanya itu "jauh lebih cepat."
Ketika saya mencari artikel saya dapat menemukan banyak hal yang tidak terkait dengan Drupal. Atau, ketika saya menemukan artikel terkait Drupal, baik 1) file konfigurasi seseorang dengan upaya cepat untuk menjelaskan cara mengaturnya, atau 2) seseorang mengatakan "tidak, jangan gunakan nginx, gunakan Apache dengan PHP fcgid "tetapi tidak pernah ada penjelasan mengapa.
Jadi, ketika datang ke Drupal, apa realitasnya di sini?
Sebagai contoh, saya mencari sesuatu di sepanjang baris artikel 2bits.com ini. Di sini penulis telah melihat Apache mod_php vs Apache dengan fcgid, menimbang pro dan kontra dari masing-masing, dan memberikan studi kasus untuk menggambarkan dampak di dunia nyata. Ada cukup informasi dalam artikel ini bagi saya untuk membuat keputusan berpendidikan tentang pendekatan mana yang terbaik untuk situasi saya.
Sementara penulis membandingkan mod_php dengan fcgid, saya mencari jenis yang sama komprehensif, tampilan dunia nyata di Apache vs Nginx.
Adakah yang beralih ke Nginx dan "terpesona" oleh perbedaan yang dibuatnya dibandingkan dengan Apache? Bahkan untuk lingkungan yang sangat optimal yang sudah menggunakan APC, Memcache, dan caching agresif seperti Varnish, ketika satu-satunya variabel yang berubah adalah mengganti Apache dengan Nginx, tidak membuat cukup banyak perbedaan dalam dan dari dirinya sendiri untuk pantas berinvestasi dalam teknologi alternatif yang lebih baru ini. ?
Situs yang akan masuk ke server ini mendapatkan rata-rata 2 juta PV sebulan. LAMP stack menjalankan Cent OS 6. 4 core CPU dengan 8 GIG ram. Memcached dan APC akan menjadi bagian dari campuran. Tidak ada yang istimewa tentang pemasangan Drupal - pada dasarnya vanilla 7 dengan sekitar 50 modul.
sumber
Jawaban:
Sebenarnya, ini tidak menjawab pertanyaan yang Anda tanyakan. Saya berharap itu membantu juga.
Apache / Nginx / Lighttpd / server web lainnya. Apakah penting yang mana yang saya pilih? Singkatnya, ada .
Jawaban yang jauh lebih lama:
Jika , dan hanya jika, Anda memiliki persentase yang sangat besar dari pengguna yang masuk, jika Anda peduli tentang kinerja server web Anda. Jika pengguna Anda anonim, perbedaan apa pun yang secara teoritis dapat Anda peroleh dari pengoptimalan pada lapisan itu sangat berarti dibandingkan dengan membuat sumber daya Anda lebih baik untuk di-cache. Jika file css Anda memiliki header cache yang tepat, UA bahkan tidak akan meminta mereka untuk kedua kalinya. Itu penting. Jika Anda dapat men-cache halaman Anda di Varnish atau solusi perangkat lunak serupa, maka melayani halaman itu adalah masalah membuat hash-lookup, dan kemudian mengembalikan sejumlah besar data langsung dari RAM. Itu penting. Dalam kedua skenario ini, daemon HTTP bahkan tidak pernah terlibat, PHP tidak dipanggil. Drupal tidak bisa bootstrap. Tidak ada set modul besar yang harus dimuat ke dalam RAM, tidak ada query database memakan waktu dieksekusi.
Ketika Anda melakukan pemuatan halaman penuh, dari cache dingin, untuk pengguna yang login, pada halaman yang kompleks; banyak hal terjadi. Ya, server web terlibat dalam menangani permintaan yang masuk, mengatur beberapa tajuk dan meneruskan tanggapan. Tetapi waktu yang diperlukan, bahkan tidak relevan dalam konteks Drupal menjalankan bootstrap penuh dan mengeluarkan responsnya. Mungkin ada ratusan permintaan basis data yang dieksekusi. Logika yang sangat kompleks dalam PHP dievaluasi oleh parser. Banyak modul sedang dimuat ke dalam RAM. Meningkatkan kinerja hal-hal itu, jauh lebih mungkin untuk memberikan kontribusi serius terhadap kinerja.
Demi argumen: Katakanlah Anda telah menghabiskan banyak waktu untuk mengoptimalkan kinerja yang lainnya.
Jika Anda memiliki banyak pengguna yang masuk, dan Anda telah berurusan dengan semua hal di atas, maka Anda mungkin dapat membuat perbedaan tetapi penyempurnaan kinerja, atau mengganti server web Anda. Namun, coba tebak. Situs Anda sangat kompleks, dan pola penggunaan pengguna khusus Anda adalah unik . Tidak ada jawaban umum. Anda perlu mengatur semua server web yang berbeda di belakang load balancer, dan melihat bagaimana mereka berperilaku, dalam skenario Anda .
Di atas adalah upaya untuk secara logis mencapai kesimpulan bahwa kinerja waktu menghabiskan mengoptimalkan server web kemungkinan penggunaan waktu yang buruk. Saya ingin seseorang membuat lubang di atas, saya mungkin akan belajar sesuatu yang baru darinya. :)
Beberapa catatan lain:
$ wc -l $(find . -type f | grep -v "^\.git" | grep -v "^\.hphp/third_party") | sort -nr | head -n1
dan menemukan itu terdiri dari 1.512.481 baris kode. Itu adalah jumlah pekerjaan yang benar-benar gila untuk meningkatkan kecepatan PHP. Saya menduga itu karena kecepatan PHP sangat berarti bagi mereka.sumber
OK, meskipun pertanyaan ini sudah dijawab, saya necromancing sekali lagi, terutama karena saya tidak suka implikasi dari jawaban ini yang tidak membuat perbedaan, dan karena sebagai pengembang web, saya benci caching dengan penuh semangat .
Perbedaan antara Apache dan nginx bukanlah "seberapa cepat mereka dapat melayani permintaan", tetapi berapa banyak permintaan yang dapat mereka layani pada jumlah perangkat keras yang sama (terutama dengan sumber daya terbatas), yang merupakan hal yang agak berbeda.
Apache adalah server berbasis proses. Artinya itu memroses proses untuk setiap permintaan. Nginx adalah server berbasis peristiwa, artinya menggunakan loop acara (asinkron) alih-alih proses atau utas.
Dan sementara server berbasis proses (seperti Apache) dapat melakukan kurang lebih setara dengan server berbasis peristiwa asinkron (seperti nginx) di bawah beban ringan, di bawah beban yang lebih berat seperti misalnya 10'0000 permintaan simultan, nginx hanya menggunakan beberapa RAM megabita, sedangkan Apache memerlukan beberapa ratus megabita untuk server web saja (tidak termasuk aplikasi web, yang membutuhkan lebih banyak sumber daya sendiri), jika bisa melakukannya sama sekali.
Jadi di bawah beban yang lebih berat, Anda akan melihat Apache mengonsumsi terlalu banyak RAM, yang secara mengejutkan menurunkan kinerja secara signifikan.
Lebih penting lagi, konsumsi RAM yang lebih tinggi berarti bahwa Apache dapat melayani lebih sedikit permintaan pada perangkat keras yang sama daripada nginx, yang berarti Apache membutuhkan lebih banyak perangkat keras untuk jumlah pengguna yang sama, yang berarti Anda memiliki TCO yang lebih tinggi (total biaya kepemilikan) dengan Apache daripada dengan nginx, yang mengurangi ROI Anda (laba atas investasi).
Total memori yang digunakan oleh koneksi bersamaan X (lebih sedikit lebih baik)
Permintaan yang dapat dilayani per detik pada koneksi bersamaan X pada 1 set perangkat keras (lebih banyak lebih baik)
Sumber: ApacheBench, oleh dreamhost.com
Lihat juga tulisan laut digital ini .
Rupanya, itu tergantung pada Arsitektur Penanganan Koneksi yang Anda pilih untuk Apache.
sumber
Saya beralih dari Apache ke Nginx / PHP-FPM beberapa bulan yang lalu.
Saya membuat beberapa benchmarck dengan situs web drupal, dan menguji beberapa use case. Di server VPS dengan 1 CPU dan RAM 512 Mo
Drupal dengan hanya cache
Nginx
Apache
Drupal dengan cache dan boost
Nginx
Apache
tolok ukur untuk pengguna terotentikasi (memuat halaman)
Nginx
Apache
Tetapi kekuatan Nginx adalah sistem cache
Drupal tanpa Boost dan Nginx dengan sistem cache diaktifkan
Anda harus menggunakan konfigurasi Nginx perusio untuk Drupal
sumber
Berikut adalah tes kinerja untuk sepuluh webservers / varients (mis. Apache, Nginx, lighttpd, Lightspeed, Hiawatha, Cherokee). Tiga tes berhubungan dengan Drupal.
Saya pikir Hiawatha mungkin menjadi pilihan terbaik secara keseluruhan. Seharusnya memiliki kompatibilitas Drupal penuh , memiliki penekanan pada keamanan (DoS, XSS, CSRF, pencegahan injeksi SQL), dan kecepatan & jejak yang mirip dengan Nginx.
Dalam dua dari tiga tes Drupal, baik Hiawatha dan Nginx mengungguli Apache sekitar 150%, tetapi dalam tes statis Drupal, Apache sedikit mengungguli Nginx, sementara Hiawatha mengalahkan paket dengan sekitar 10%.
Saya tidak akan menggantungkan topi saya pada salah satu dari tes ini, tetapi itu memberikan satu pandangan kasar tentang kinerja dalam situasi penggunaan yang berbeda. Saya pikir kinerja saja seharusnya bukan satu-satunya pertimbangan. Stabilitas dan keamanan mungkin menjadi faktor yang lebih penting.
sumber
di sini adalah hasil pengujian beban untuk drupal berjalan pada perangkat keras yang sama tetapi dengan server web yang berbeda. (nginx dan apache)
inilah kesimpulan dari tes ini:
sumber