APACHE+PHP と NGINX+PHP のパフォーマンス評価 (翻訳)
フォーラムの一部のメンバーが独自の方法で PHP を実行する際の NGINX と APACHE のパフォーマンスについて疑問を抱いているという事実を考慮して、海外の記事を転載および翻訳し、後で私自身の意見を表明しました。みんなに。
原文: http://blog.a2o.si/2009/06/24/apache-mod_php-compared-to-nginx-php-fpm/
すべてのソフトウェアはソース コードからコンパイルされます (詳細は以下を参照)。ストレス テスト ツールは APACHE の ApacheBench (ab) を使用します。次の結果は、すべてのサーバー システム (nginx、apache) でログ機能がオフになっています (テスト中はキープアライブが有効です)。各テストは 1 回有効にされ、1 回無効にされ、平均値が取得されます。テストされたファイルは次のとおりです:
HelloWorld.php ? PHP ファイルのテスト処理プロセスのオーバーヘッドを表すために使用される、短く出力される PHP スクリプト
HelloWorld.txt ? 「Hello, World!」 (同じ 13 バイト) を出力する静的ファイル
100KB.txt ? 静的な 1MB サイズのファイルファイル
Index.php ? データベース クエリ、ファイル キャッシュの読み取り、テンプレート [コンパイル] 処理など、複数の複雑な処理プロセスが含まれる PHP ファイル。
ハードウェア環境
ハードウェア: HP DL380 G5
ハードウェア CPU: 2x Intel Xeon E5420 (各 4 コア、合計 8 コア)
ハードウェア メモリ: 8GB の ECC RAM
ハードウェア ディスク: 2x 147GB SAS を備えた Smart Array P400i RAID-1ドライブ
オペレーティングシステム: Slackware 12.2 (ほぼすべてのソフトウェアがソースからコンパイルされたもの)
ファイルシステム: ext3
Apache バージョン: 2.2.11、php は mod_php によって実行されます
Nginx バージョン: 0.7.59、php は php-fpm によって実行されます (ソケット経由) ) )
PHP バージョン: 5.2.9
Eaccelerator バージョン: 0.9.5.3 (Apache と Nginx の両方)
MySQL バージョン: 5.0.77
OpenSSL バージョン: 0.9.8k
サービス ログとリクエスト ログは無効です
Apache コンパイル オプション:
./configure ?prefix=/usr/local/$PDESTDIR_HTTPD ?sysconfdir=/etc/httpd
?enable-authn-file ?enable-authn-default
?enable-authz-host ?disable-authz-groupfile ? Enable-authz-user ?enable-authz-default
?enable-auth-basic
?disable-include ?disable-filter ?disable-charset-lite
?enable-log-config
?enable-env ?enable-setenvif
?enable-ssl ?with-ssl=/usr/local/openssl-$PVERSION_OPENSSL
?enable-http ?enable-mime ?enable-status
?disable-autoindex ?disable-asis
?enable-info
?enable-cgi ?disable-cgid
?enable-vhost-alias
?disable-negotiation
?enable-dir
?disable-actions
?disable-userdir
?enable-info
?enable-rewrite
?enable-so
?with- mpm=prefork
Nginx コンパイル オプション:
./configure ?prefix=/usr/local/$PDIR
?conf-path=/etc/nginx/nginx.conf
?error-log-path=/var/log /nginx/nginx_error.log
?pid-path=/var/run/nginx.pid
?lock-path=/var/run/nginx.lock
?user=httpd
?group=httpd
?with-openssl= /usr/local/openssl-0.9.8k
PHP コンパイル オプション (APACHE で実行される MOD_PHP):
??[これらの行は Apache を使用した PHP (mod_php) 用です]??????-
./configure ?prefix =/usr/local/$PDESTDIR_HTTPD/$PDIR
?with-apxs2=/usr/local/$PDESTDIR_HTTPD/bin/apxs ?enable-cli ?enable-cgi
?with-config-file-path=/etc /php /httpd
NGINX (php-fpm) で実行
??[これらの行は Nginx を使用した PHP (php-fpm) 用です]??????-
./configure ?prefix=/usr/local /php-fpm
?enable-cli ?enable-fastcgi ?enable-fpm
?with-fpm-conf=/etc/php/php-fpm/php-fpm.conf
?with-fpm-log=/var/ log/php- fpm.log
?with-fpm-pid=/var/run/php-fpm.pid
?with-config-file-path=/etc/php/php-fpm
PHP 共通設定
?[これらの行 ?両方に共通です]?????-
?disable-short-tags
?disable-ipv6
?disable-all
?enable-libxml
?with-openssl=/usr/local/openssl -$PVERSION_OPENSSL
?with-pcre-regex
?with-zlib
?with-bz2
?with-curl ?with-curlwrappers
?enable-dba=shared ?with-db4 ?enable-inifile ?enable- flatfile
?enable-dom ?with-libxml-dir
?enable-filter
?enable-ftp
?with-gd ?with-jpeg-dir ?with-png-dir ?with-freetype-dir
?with-gettext
? Enable-hash ?with-mcrypt
?with-iconv=/usr/local/lib ?with-iconv-dir=/usr/local/lib
?with-imap=/usr/local/imap-$PVERSION_CYRUSIMAP ?with- imap-ssl
?enable-json
?enable-mbstring ?enable-mbregex ?enable-mbregex-backtrack
?with-mysql=/usr/local/mysql-$PVERSION_MYSQL ?with-mysqli=/usr/local/mysql- $PVERSION_MYSQL/bin/mysql_config
?enable-pdo ?with-pdo-mysql=/usr/local/mysql-$PVERSION_MYSQL ?with-pdo-sqlite ?enable-sqlite-utf8
?enable-reflection
?enable-session ? with-mm
?enable-shmop
?enable-simplexml
?enable-soap
?enable-sockets
?enable-spl
?with-regex
?enable-sysvmsg ?enable-sysvsem ?enable-sysvshm
?有効- tokenizer
?enable-xml ?enable-xmlreader ?with-xmlrpc ?enable-xmlwriter ?with-xsl
?enable-zip
?with-pear
?enable-zend-multibyte
構成文档:
Apache mod_php: httpd.conf http://blog.a2o.si/wp-content/uploads/2009/06/httpd.conf.txt
Apache mod_php: php.ini http://blog.a2o.si/wp- content/uploads/2009/06/php.ini.txt
Nginx php-fpm: nginx.conf http://blog.a2o.si/wp-content/uploads/2009/06/nginx.conf.txt
Nginx php -fpm: php-fpm.conf http://blog.a2o.si/wp-content/uploads/2009/06/php-fpm.conf.txt
Nginx php-fpm: php.ini与mod_php方式と同じ
調査結果:
HelloWorld.php
ここでは、各 PHP リクエストに適用されているアクセス許可が表示されます。テスト実行のより良い、より多くの理由がここにあります。つまり、Apache の PHP は mod_php によって「内部配置」され、モジュールが処理されます。 一方、Nginx のプロシージャ PHP は別のアプリケーション プログラム サーバー (PHP-FPM) を要求します。 上の図のパフォーマンスは、Apache のほぼ半分です。ここの PHP は単一出力文字列のみです。 ]
[font='Lucida Grande', Verdana, Arial, sans-serif]
[font='Lucida Grande', Verdana, Arial, sans-serif]
今回の検査では Apache が開始落とされました。このテストは静的ファイル サービスの公開です。 、Verdana、Arial、sans-serif]
[font='Lucida Grande'、Verdana、Arial、sans-serif]
在这里的测试已经接近生产应用中的静态文件了(100KB),而して我们能够明らかに、Nginx はキープアライブを無効にし、Apache を使用したキープアライブの圧力よりも NGINX が APACHE よりも約 2 倍優れています。 )。
[font='Lucida Grande', Verdana, Arial, sans-serif]1MB.txt
この次の調査はすべてのサービングサービスが維持されておらず、各要求が新しく確立されています。ただしデータ転送と比較して、これは新しく作成された接続の制限はありません。 、重要な PHP プログラムの時期、パフォーマンスには NGINX は関係しません。へ:
apache 启.htaccess(NGINX にはこの機能はありません)その後、接続されているデータベースのパフォーマンスが低下する可能性があります。自分で処理する能力とNGINX
要約:
APACHE の静的処理能力は NGINX とは関係ありませんが、NGINX 処理 PHP の安定性は apache mod_php とは関係ありません。
如果取长补短哩?
NGINX がフロントエンド、APACHE がバックエンドです。 NGINX proxy_pass apache を使用し、一貫性を保つために 2 つのサーバー doc_root を照合し、NGINX に静的ファイルを直接出力させ、処理のために PHP リクエストのみをバックエンド Apache に転送します。
メンバーから質問があります。2 つのサーボは単純に不要です。
回答: 私の目標は、高い耐荷重性と安定性を同時に実現することです。一つを選ぶのではなく。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。
