nginx勉強会

45
Nginx 勉勉勉 勉勉勉勉勉勉勉勉 勉勉勉勉勉 勉勉 勉勉

Upload: yuji-otani

Post on 28-May-2015

6.544 views

Category:

Documents


3 download

DESCRIPTION

社内で行ったnginx勉強会の資料です。

TRANSCRIPT

Page 1: Nginx勉強会

Nginx 勉強会

株式会社シーエー・アドバンス大谷 祐司

Page 2: Nginx勉強会

はじめに

今回の勉強会は、新しい Web サーバとして注目されている Nginx( エンジンエックス )がテーマです。

シーエー・アドバンスでも CS の業務システムで採用されており、高いパフォーマンスで安定稼働している実績があります。

Page 3: Nginx勉強会

雑誌にも特集が組まれています

Page 4: Nginx勉強会

入門書も出ています。

Page 5: Nginx勉強会

採用実績

・クックパッド

・サイバーエージェント

・ pixiv

・ Wikipedia

・ facebook

・ Hulu

Page 6: Nginx勉強会

採用実績

・ Dropbox

・ github

・ Groupon

・ Yandex

・ Zynga

・ SourceForge

Page 7: Nginx勉強会

採用実績

これら、多くの有名サービスで Nginx が

採用されています。

某ソーシャルゲームのプラットフォーム

では Apache の使用を止め、ほぼ全ての

サービスを Nginx に移行しているそうで

す。

Page 8: Nginx勉強会

Nginx の概要

Page 9: Nginx勉強会

Nginx の概要

Nginx はオープンソースの Web サーバです。高い並行性と処理性能、メモリ使用量の小ささに重点を置いて開発されています。

Unix 系 OS 、 Linux 、 BSD 系 OS 、 Mac OS X 、 Solaris 、 AIX 、 HP-UX 、 Microsoft Windows で動作します。

Page 10: Nginx勉強会

Nginx の概要

Nginx は処理が軽く、大量のリクエストを処理するのに向いています。

リバースプロキシ、静的コンテンツの配信、ロードバランサ等の用途に Nginx が多く採用されています。

Page 11: Nginx勉強会

Nginx の概要

逆に、 Nginx は cpu リソースがたくさん必要な処理には向いていません。

処理時間が長くなる処理を実行した際、そこでプロセスがブロックされてしまい処理能力が落ちてしまいます。

Page 12: Nginx勉強会

Nginx が解決するとされる

C10K 問題について

考えてみましょう。

Page 13: Nginx勉強会

ハード性能的に問題が無い。

しかし、

クライアントの数が多くなるとサーバがパンクする場合がありま

す。

Page 14: Nginx勉強会

なぜでしょうか。

Page 15: Nginx勉強会

プロセス番号が足りなくなる。

UNIX 系 OS だとプロセス番号は符号付

き 16 ビット整数、つまり最大 32767

です。

Page 16: Nginx勉強会

処理が小さいものはプロセスではなく、スレッドで解決したい。

これを実現するのが、「イベントループ方式」です。

最近話題の言語 node.js も同じ方式で開発されています。

Page 17: Nginx勉強会

「イベントループ方式」とはシングルスレッドでループ処理をまわし,キューに溜まったイベントを処理していく処理方式です。

Page 18: Nginx勉強会

Nginx のシェア

世界中の Web サービスにおいて、 Apache, IIS に次ぐ 3 番目のシェアを持っています(11.8%)上位1万位までのサイトに限定すると、 18%のシェアを持っています。

2008 年以降にコンスタントにシェアを伸ばし続けてきましたが、 2011 年から一気にシェアが拡大しています。

Page 19: Nginx勉強会

Nginx のシェア (2012/12)

Page 20: Nginx勉強会

Nginx のシェア (2012/12)

Page 21: Nginx勉強会

Nginx の歴史

Page 22: Nginx勉強会

Nginx の歴史

Nginx は 2004 年に、 Rambler というロシアの検索エンジンやその関連サイトにおけるニーズを満たすために開発されました。

開発者は Igor Sysoev という 1970 年生まれのロシア人で、現在は NGINX 社の CTOです。

Page 23: Nginx勉強会

Nginx の歴史

ロシアを中心に開発されている Nginx ですが。ロシア国内の人気サイトにおいて、シェアは 50% 以上と言われています。

Page 24: Nginx勉強会

Nginx の用途

Page 25: Nginx勉強会

リバースプロキシ

Page 26: Nginx勉強会

特定多数のクライアントから寄せられる要求に対して、応答を肩代わりすることにより特定のサーバの負担を軽減したり、アクセスを制限したりします。

これにより特定のサーバの負荷を軽減したり、セキュリティを高めたりする目的に用いられます。

リバースプロキシ

Page 27: Nginx勉強会

静的コンテンツの配信 (CDN)

Page 28: Nginx勉強会

テキストや画像といった静的コンテンツの配信に多く用いられています。

イベント駆動アーキテクチャにより、大量のリクエストを同時に処理できるスケーラビリティを備えているためです。

静的コンテンツの配信 (CDN)

Page 29: Nginx勉強会

ロードバランサ

Page 30: Nginx勉強会

外部ネットワークからのリクエストを一元的に管理し、同等の機能を持つ複数のサーバに要求を分散して送信する仕組みです。

複数台の Web サーバや DB サーバで処理を分散する際などに用いられます。

ロードバランサ

Page 31: Nginx勉強会

Nginx の用途として従来はリバースプロキシや静的コンテンツ配信が主な用途でしたが、最近ではWeb サーバとして活用する企業も増えています。

PHP を動かす際には、 PHP-FPM を使用します。PHP5.4 に実装されているビルトインサーバと同じモジュールです。

Web サーバ

Page 32: Nginx勉強会

Nginx の設定

Page 33: Nginx勉強会

設定ファイルは「 nginx.conf 」を使用します。独自の DSL(DomainSpecificLanguage) で記述されています。

代表的な Web サーバの Apache と比較しても、より直感的で柔軟に設定を行う事が可能です。

設定ファイル

Page 34: Nginx勉強会

Web サーバとしての Nginx の機能は、ほとんどが拡張モジュールとして実装されています。

公式に提供されているもの意外にも、独自のモジュールを作成することが可能です。

拡張モジュール

Page 35: Nginx勉強会

アーキテクチャ

Page 36: Nginx勉強会

Nginx の概要

Apache 等の一般的な Web サーバとの大きな違いは、イベント駆動アーキテクチャを採用している事です。

これによって、少量のプロセスだけで大量のリクエストを処理する事が可能です。

Page 37: Nginx勉強会

Nginx のリクエスト処理イメージ

Page 38: Nginx勉強会

Nginx の概要

Apache の prefork はプロセス駆動アーキテクチャを持っています。これは、各リクエストをプロセスに割り合てて処理を行います。

リクエストが大量に来た際、プロセスが同時起動するのでオーバーヘッドが非常に大きくなるというデメリットがあります。

Page 39: Nginx勉強会

Apache prefork のリクエスト処理イメージ

Page 40: Nginx勉強会

「スレッド」と「プロセス」

Page 41: Nginx勉強会

「スレッド」と「プロセス」

スレッドプロセス内に作られる、一つのプログラム内で並列処理を行うための仕組み。リソースはスレッドを起動するプロセスのものが割り当てられる。

Page 42: Nginx勉強会

「スレッド」と「プロセス」

プロセスプログラムの実行単位。 OS からリソースの割当はプロセス単位で行われる。

Page 43: Nginx勉強会

最後に

Page 44: Nginx勉強会

Web サーバはこれまで長い間 Apache が主流でしたが、最近は Nginx 等の新しいプロダクトが登場しています。

それぞれの特徴を理解して、サービスに最適なものを選択できるようにしていきましょう。

Page 45: Nginx勉強会

勉強会は以上になります。ご清聴ありがとうございました。