cari

Rumah  >  Soal Jawab  >  teks badan

Ujian throughput Ab, mengapa nginx tidak sebaik apache

Persekitaran

系统 win7 x64 8G内存 ADM7750双核
对比 
1) Apache 2.4.9 + php5.5.12 ts vc11 
2) NGINX 1.6.2 + PHP-FPM

Kod

<?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>

Ujian

./ab -c10 -n1000 http://localhost/hello.php
./ab -c10 -n1000 http://localhost/js.html

Hasilnya

            js.html                         hello.php
nginx      0.907sec 1102/sec                timeout error 
apache     0.695sec 1439/sec                0.198s 1089/sec

Soalan

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?

怪我咯怪我咯2749 hari yang lalu859

membalas semua(5)saya akan balas

  • 漂亮男人

    漂亮男人2017-05-16 17:03:44

    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:

    ab -k -c100 -n10000 http://127.0.0.1/info.htm      # IIS RPS 1709
    ab -k -c100 -n10000 http://127.0.0.1:8080/info.htm # Apache RPS 1847
    

    Kesimpulan: Apache berdasarkan masa jalan APR dan WinNT multi-threading tidak lebih buruk daripada IIS dalam pemprosesan sumber statik.

    Prestasi PHP:

    ab -k -c100 -n10000 http://127.0.0.1/bs.php      # IIS RPS 1180
    ab -k -c100 -n10000 http://127.0.0.1:8080/bs.php # Apache RPS 1071
    

    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.

    balas
    0
  • 滿天的星座

    滿天的星座2017-05-16 17:03:44

    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.

    balas
    0
  • 仅有的幸福

    仅有的幸福2017-05-16 17:03:44

    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.

    balas
    0
  • 仅有的幸福

    仅有的幸福2017-05-16 17:03:44

    Menang NG? 哎

    balas
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 17:03:44

    Saya tidak akan menyiarkan konfigurasi Adakah nginx mendayakan epool?

    balas
    0
  • Batalbalas