系统 win7 x64 8G内存 ADM7750双核
对比
1) Apache 2.4.9 + php5.5.12 ts vc11
2) NGINX 1.6.2 + PHP-FPM
<?php
# http://localhost/hello.php
echo "hello";
<!-- http://localhost/js.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body></html>
./ab -c10 -n1000 http://localhost/hello.php
./ab -c10 -n1000 http://localhost/js.html
js.html hello.php
nginx 0.907sec 1102/sec timeout error
apache 0.695sec 1439/sec 0.198s 1089/sec
Sekarang semua orang mengesyorkan nginx, tetapi mengapa pemprosesan nginx tidak kira sama ada HTML tulen atau PHP sahaja, lebih rendah daripada Apache
Platform UGC lebih sesuai untuk Apache atau nginx?
Ujian perbandingan prestasi IIS dan Apache pada Windows 7
IIS + php-cgi.exe(NTS) lwn Apache + php5apache2_4.dll(TS)
Environment (64-bit Win7): IIS7+PHP5.4 (NTS non-thread- versi selamat) lwn Apache2.4 (32-bit)+PHP5.4
Prestasi fail statik:
Kesimpulan: Apache berdasarkan masa jalan APR dan WinNT multi-threading tidak lebih buruk daripada IIS dalam pemprosesan sumber statik.
Prestasi PHP:
Kesimpulan: Apache menggunakan MPM berulir, jadi ia perlu menggunakan versi PHP yang selamat untuk benang Pemeriksaan keselamatan benang mempunyai overhed tertentu, jadi prestasinya lebih rendah daripada IIS+PHP-CGI.
.Nginx tidak berdasarkan multi-threading untuk mencapai konkurensi tinggi, tetapi berdasarkan epoll (Linux), kqueue (FreeBSD) mekanisme rangkaian tak segerak dipacu oleh Nginx menggunakan pilihan paling asli pada Windows, bukan Windows IOCP, jadi Windows Versi Nginx ini hanya disasarkan pada ujian dan pembangunan Untuk melancarkan prestasi sebenar Nginx, ia mestilah pada Linux atau FreeBSD.
Walaupun Apache juga menggunakan panggilan sistem terpilih pada Windows, WINNT MPM Apache ialah MPM berbilang benang, jadi ia juga mempunyai kelebihan berbanding IIS dalam memproses sumber statik di bawah konkurensi tidak tinggi (seperti 100 concurrency). MPM yang menggunakan epoll pada Linux Contohnya, acara lalai MPM dalam siri 2.4 ialah seni bina yang didorong oleh peristiwa epoll. Proses utama menguruskan berbilang proses pekerja, dan setiap proses pekerja mempunyai berbilang utas Menggunakan epoll Menjalankan rangkaian tak segerak adalah milik Apache tindak balas yang kuat terhadap cabaran Nginx.
windows tidak menjelaskan apa-apa. Ia hanya digunakan untuk ujian di bawah tingkap dan tidak lebih.
Versi nginx untuk Windows menggunakan API Win32 asli (bukan lapisan emulasi Cygwin Hanya kaedah pemprosesan sambungan pilih() sedang digunakan, jadi prestasi tinggi dan kebolehskalaan tidak boleh dijangkakan disebabkan ini dan beberapa versi isu lain yang diketahui daripada nginx untuk Windows dianggap sebagai versi beta
Windows tidak mempunyai epoll dan kqueue, jadi nginx secara semula jadi berprestasi buruk apabila menggunakan pilih pada Windows.
Merupakan tabiat yang baik untuk poster untuk menguji dan mengesahkan secara peribadi, tetapi Linux biasanya digunakan sebagai pelayan nginx. Jika anda menggunakan windows, prestasi nginx mungkin tidak sehebat apache. Seharusnya kedua-dua nginx dan apache menggunakan mekanisme operasi yang sama pilih pada tingkap, yang serupa dengan pemprosesan gelung beratur.
Prestasi nginx yang perlahan di bawah tingkap mungkin disebabkan oleh: nginx juga perlu memanggil php-cgi, dan apache mempunyai integrasi terbina dalam sapi php.
Di bawah Linux, apache masih menjadi pilihan, dan nginx boleh menggunakan epoll, kemudian:
apache masih beratur untuk memproses
mekanisme epoll nginx, datang permintaan, membuangnya ke php-cgi, dan kemudian meneruskan ke permintaan seterusnya. Apabila php-cgi selesai diproses, hanya kembalikan kepada klien. Ini berlaku selari.
Poster boleh melihat perbezaan antara epoll dan apache:
Andaikan anda sedang belajar di kolej dan bangunan asrama yang anda diami mempunyai banyak bilik, dan rakan anda ingin datang kepada anda.
Tuan rumah dalam versi terpilih akan membawa rakan anda mencari anda dari bilik ke bilik sehingga mereka menemui anda.
Versi epoll makcik asrama akan tulis dulu nombor bilik setiap pelajar Apabila rakan anda datang, anda hanya perlu memberitahu rakan anda di bilik mana anda tinggal. Anda tidak perlu membawa rakan anda keliling bangunan. cari seseorang.
Jika 10,000 orang datang dan ingin mencari rakan sekelas mereka yang tinggal di bangunan ini, jelaslah siapa yang lebih cekap dalam versi pilihan atau versi epoll.
Begitu juga, dalam pelayan konkurensi tinggi, tinjauan I/O adalah salah satu operasi yang paling memakan masa. Ia juga sangat jelas prestasi mana yang lebih tinggi antara pilihan dan epoll.
Menang NG? 哎
Saya tidak akan menyiarkan konfigurasi Adakah nginx mendayakan epool?