NginxとApacheの違いメモ

  • 84
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

簡単なまとめ

Apache

マルチプロセスモデル : 接続ごとにプロセスをフォークするのでメモリがいっぱいになりやすい

  • 利点 : メモリ空間が独立しているので、スクリプト言語が組み込みやすい
  • 欠点 : 同時接続が増えるとメモリが欠乏しやすい

→ とは言え、モジュールを使えば、イベント駆動モデルにもできるよ。Nginxには及ばないけど。

Nginx

イベント駆動モデル : 1プロセス内で、接続ごとにイベント処理を行う。1プロセス1CPUなので、CPUの数だけワーカープロセスが作成できる。

  • 利点 : 接続数が増えても、プロセス数やスレッド数が増えない。消費メモリが増えない
  • 欠点 : 1つのメモリ空間で動作するため、スクリプト言語を組み込めないことがある。

→ とは言え、プロキシサーバとして利用すれば、スクリプト言語を呼び出せるよ。

ではApacheを利用するメリットは

最初から機能が豊富なので、その機能を早く利用したい場合に消極的に選択するくらいかな。。
すくなくとも、圧倒的に良い部分が分からなかった。

もっと詳細

Apache

モジュール次第で、マルチプロセスでもマルチスレッドでもイベント駆動にもできる。が、イベント駆動としては、nginxの方が優秀。

nginx_apache.png

参照 : http://openstandia.jp/pdf/140228_osc_seminar_ssof8.pdf

Nginx

WebApplicationと連携するときには、プロキシサーバとして動作させる。
- PHP : PHP-FPMで動かし、FastCGI経由で動作させる
- Ruby : unicornで動かし、HTTPプロキシーとしてアクセスする

※ FastCGIはプロセスをメモリ上に永続化することで、起動/終了コストを削減する。