Nginxは、高機能性や設定容易性などにより「Apache HTTP Server」を代替できるWebサーバとして注目されています。
Nginxは「Apache HTTP Serverより優れたパフォーマンスを達成する」という明確な目標を立てて開発されました。
静的コンテンツ(HTMLドキュメントや画像ファイルなど)を高速で配信する能力は、「Apache HTTP Server」より優れています。Apacheよりもメモリを大幅に節約し、毎秒約4倍のリクエストを処理できます。
Nginxは、アクセス数が多いサイトで急激にシェアを拡大していて、上位1000トップシェアのカテゴリでは、Apacheを上回ってきているというデータもあります。
Apache HTTP Serverは、リクエスト処理にデフォルトで「スレッド/プロセス指向アプローチ」を用いています。
一方で、Nginxは、リクエストを処理するためにスレッドではなく、「非同期イベント駆動アプローチ」を採用しています。Nginxのモジュール式イベントドリブンアーキテクチャは、特に高負荷下において、より予測可能なパフォーマンスを提供します。
また、Nginxは、「C10K問題」を解決するために開発されました。「C」は「Client(クライアント)」、「10K」は「1万台」を意味します。ハードウェアやネットワーク性能に問題がなくても、同時クライアント接続数がある一定数を超えるとサーバの処理能力が急激に減少してしまうという問題です。
Apache HTTP Serverは、1つのリクエストを処理するごとにリソースを消費していく仕組みです。
一方、Nginxは、非同期イベント駆動アーキテクチャを採用して対応しています。並列処理を重視した設計で、同時アクセス数が増えても安定的に動作できます。そのため、Nginx開発者によると「同時接続数がApacheの10~100倍に増加」としています。
Nginxの多くの機能はモジュール化されているため、柔軟に機能構成変更を行えます。
・不要な機能を外して軽量化
・公開されているモジュールを取り込んで機能強化
・独自機能を実装したモジュールを開発して追加 など
Nginxには「1つのマスタプロセス」と「複数のワーカープロセス」があります。
このようなアーキテクチャにより、柔軟な設定が可能で、クライアントサービスを中断することなく実行可能ファイルの再構成とアップグレードを行えます。
マスタープロセスは「構成ファイルを読み込んで評価」「ワーカープロセスの維持」を行います。
ワーカープロセスは「要求に対する実際の処理」を行います。
Nginxは、イベントベースモデルとOSメカニズムに対応して、ワーカープロセス間で効率的に要求を分散します。
ワーカープロセスの数は設定ファイル(nginx.conf)のディレクティブによって定義され、「固定数に設定」もしくは「使用可能なCPUコア数に自動的に調整」を設定できます。
2017年04月19日(水)14:30~16:30 中央区のJJK会館2階多目的ホールA にて「米国におけるオープンソース最新活用状況」と題したセミナーが開催されました。 当日は、オープンソースに関心をお持ちの方々がご来場くださり、お陰様で盛況のうちに終了することができました。皆さま熱心に公聴され、メモを執る姿も多く見受けられましたました。 また、来場者アンケートでは多くのコメントを頂戴しまし...
OSS×Cloud ACCESS RANKING