LoginSignup
167

More than 5 years have passed since last update.

Apacheとnginxどちらを採用すべきかメリット・デメリット比較

Last updated at Posted at 2015-10-31

Apacheよりnginxの方が早い、という話を聞きました。それぞれのメリット/デメリットや速度比較について調べた内容をまとめます。

そもそもApacheとnginxは駆動方式が違う

  • Apacheとnginxの大きな違いは駆動方式の違い。詳しくは下記サイトがわかりやすい。
    http://dream-web.info/2013/12/19/533/
  • Apacheは、プロセス駆動アーキテクチャでマルチプロセス。これは、各リクエストをプロセスに割り当てて処理を行う。リクエストが大量に来た際、プロセスが同時に起動するのでオーバーヘッドが非常に大きくなるというデメリットがある。
  • nginxは、イベント駆動アーキテクチャ、シングルスレッドモデル。 シングルスレッドでループ処理をまわし、キューに溜まったイベントを処理していく処理方式(イベントループ方式)(node.jsなどでも採用)。プロセス数はCPUコア数と基本的には同じに設定。
  • イベントループ方式を採用することで、少量のプロセスだけで大量のリクエストを処理することが可能。「C10K問題(ハード性能的には問題ないが、クライアントの数が多くなるとサーバがパンクする場合がある。プロセス番号が足りなくなる。UNIX系OSだと最大32767。)」が解決される。
  • 参考 http://www.slideshare.net/yujiotani16/nginx-16850347 http://www.slideshare.net/ttkzw/nginx-intro

駆動方式の違いが具体的にどのように影響するか

  • nginxの方が、処理が軽く、大量のリクエストを処理するのに向いている。
  • nginxの方が、設定ファイル(nginx.conf)がApacheと比較してもより直感的で柔軟に設定を行うことが可能。
  • nginxは、CPUリソースがたくさん必要な処理には向いていない。処理時間が長くなる処理を実行した際、そこでプロセスがブロックされてしまい処理能力が落ちてしまう。

比較調査例

  • 単純に考察するとApacheよりもnginxの方が1.47倍処理能力が高い結果
    引用元) http://webkaru.net/linux/nginx-apache/
  • 同時10接続の20回アクセス条件であれば、圧倒的にApacheよりNGINXが優位。 Apacheが機能拡充を目指したのに対して、NGINXは大量処理、スピード重視を徹底的に追求
    引用元) http://d.hatena.ne.jp/omiyan/20101213/1292187680
  • しかしながらApacheもマルチプロセッシングモジュール(event_mpm)の設定を正しくチューニングすることで、nginxに及ばないまでも、かなりのパフォーマンスを期待出来る
    引用元) http://blog.matsumoto-r.jp/?p=2996

考察

負荷が高くなく、早期セットアップが必要な場合は「Apache」
負荷が高く、スケーラビリティが要求される場合は「nginx」
静的ページに同時多数のアクセスが想定される場合は「nginx」
動的ページは処理内容やサーバスペックによるため現状では判断できない(要調査)
ある程度の同時アクセスが見込めない場合は「Apache」
同時アクセス数は小さく、単純にリクエスト数が多い場合は「Apache」
http://vitalify.jp/blog/2012/08/apache%E3%81%A8nginx%E3%82%92%E6%AF%94%E8%BC%83%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F%E6%84%9F%E6%83%B3.html

http://www.slideshare.net/ttkzw/nginx-intro のサイトによると動的コンテンツはapacheの方が早いっぽい。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
167