Nginxは「C10K問題」のソリューションとして誕生
NginxはC10K(クライアント1万台問題)のソリューションとして誕生したWebサーバーである。
C10K(クライアント1万台問題)
Nginxが備えている機能
Nginxが備えている機能は以下の通り。必要最小限の機能のみを有する。
- リーバースプロキシ機能
- メールプロキシ機能
- 負荷分散機能
- URL Rewrite機能
- WebDAV機能
従来の「Apache」との比較
Apacheの特徴
Apacheの特徴は以下の通り(正式名称は「Apache HTTP Server」)。
- 赤い羽のロゴマーク
- 1995年生まれのベテラン選手
- プロセス駆動アーキテクチャ
- マルチプロセス
Apacheのメリット
Apacheのメリットは以下の通り。
- 実績が多く開発者向け技術情報を入手しやすい
20年以上も第一線で使われ続け”バグを出し切った枯れた技術”であるため、開発者向けの技術情報が簡単に手に入りやすい。 - 動的コンテンツの処理速度が速い
CPUリソースを多く消費する動的コンテンツの処理スピードはNgixnより速い(と言われている)
Apacheのデメリット
Apacheのデメリットは以下の通り。
- 同時接続数が増加するにつれメモリが枯渇しやすい
リクエストごとにプロセスが起動して処理されるため、リクエストが大量発生するとプロセスも同時多発的に大量発生する。起動プロセス数×ヒープサイズの掛け算でメモリリソースを大量に消費してしまう。
Nginxの特徴
Nginxの特徴は以下の通り。
- 緑フォントのロゴマーク
- 2004年生まれの未成年
- イベント駆動アーキテクチャ
- シングルスレッド(イベントループ方式)
Nginxのメリット
Nginxのメリットは以下の通り。
- 大量のリクエストを処理できる
キューにたまったリクエスト(イベント)をシングルスレッドでループ処理するため、プロセス数が増殖しない。つまりメモリリソースの消費を一定量に保ったまま大量のリクエストを処理できる。 - 設定ファイル(nginx.conf)が直感的で設定しやすい
Apacheの設定ファイル(httpd.conf)と比較して直感的で設定しやすい。
Nginxのデメリット
Nginxのデメリットは以下の通り。
- エンジン単品では機能に乏しい
エンジンは単一のメモリ空間で動作するため、PHPを代表としたスクリプト言語を処理する機能などはついていない。Nginxをリバースプロキシとして使用して配下にApacheを採用するなどの工夫が必要。 - 動的コンテンツの処理速度が遅い
CPUリソースを多く消費する動的コンテンツの処理スピードはApacheより遅い(と言われている)
Nginxのシェア
2010年台初頭から急速にシェア率を伸ばし、今ではnginxがWebサーバー市場の3分の1(33%)を占めるほどになっている
Nginx が市場シェア率の33%に達する|w3techs.com
Half of the web still runs on Apache's web server, but one third already uses Nginx, and the gap is closing fast. We have a closer look at the detailed statistics and trends.
Nginxを採用している企業
Webサーバーにnginxを採用している企業は年々拡大中である。導入企業の報告事例は以下の通り。
- Wikipedia
- クックパッド
- メルカリ
- Hulu