web-dev-qa-db-ja.com

私の場合、Apache、nginx、lighttpdのどれが良いでしょうか?

私はPHPサイトを書いています。これは、約200〜300人の同時ユーザーが閲覧することが期待されています。アプリケーションを初期化すると、約30のPHPクラス、一部が読み込まれます。 10個の画像と2個のcssファイル。

だから私の質問は、(コードを最適化し、PHP用のapc/eacceleratorを使用することを除いて)これらの同時ユーザーの数にできるだけ近づくために他に何ができるかということです。

現在、ホストするサイトのサーバーを選択していませんが、おそらくVPSデュアルコア+2または4GBのRAMになります。そのようなサーバーがその負荷を処理することは可能ですか?また、どうすれば自分でテストして、処理できることを確認できますか?

2
tftd

個人的には、PHPアプリケーションに応じて、FastCGI PHP、eAccelerator、および場合によっては_mpm_worker_を介したディスクキャッシュで_mod_disk_cache_を使用するApacheをお勧めします。 PHPを使用して、画像、JavaScript、CSSなどの静的でキャッシュ可能なファイルを生成する場合、またはコンテンツがキャッシュ可能である場合、パフォーマンスが大幅に向上することがあります。

Apacheの_mpm_prefork_ + _mod_php_から_mpm_worker_、FastCGI PHPおよび_mod_disk_cache_に切り替えたところ、速度が劇的に向上しました。理由の1つは、JSファイルとCSSファイルを縮小するためにPHPを使用し、キャッシュされた縮小JSファイルをPHPからreadfile()に呼び出すだけでもApacheを使用するよりもはるかに遅いためです。 _mpm_worker_を使用して、ディスクキャッシュからそのファイルを提供します。

多くの人が、Apacheは肥大化していて遅いと言って、Apacheの上にlighttpdを宣伝しています。私は以前lighttpdを使用したことがあり、それはかなり滑らかでしたが、私の経験では、Apacheは極端なパフォーマンスに調整でき、_mpm_worker_モジュールはlighttpdが基づいているのと同じ基本的なスレッドの概念を提供します。

Re:RAM、できるだけ多く入手してください!4GBの余裕がある場合は、それを実行してください。あなたはあなたがしたことをうれしく思うでしょう。

パフォーマンステストについては、すばらしいツールがたくさんありますが、 Apacheに付属のapacvheベンチマークツール がパフォーマンスをテストするための高速で簡単な方法であることがわかりました。それがどのように使用されるべきかの詳細は別の質問を保証します:-)

2
Josh

PHPコードが本当にひどい場合を除いて、答えは、これらのソリューションのいずれかが負荷を処理する必要があるということです。最も馴染みがあり、構成と管理が最も簡単なものを使用する必要があります。

1
mattdm