Nginx勉強会株式会社シーエー・アドバンス    大谷 祐司
はじめに今回の勉強会は、新しいWebサーバとして注目されているNginx(エンジンエックス)がテーマです。シーエー・アドバンスでもCSの業務システムで採用されており、高いパフォーマンスで安定稼働している実績があります。
雑誌にも特集が組まれています
入門書も出ています。
採用実績・クックパッド・サイバーエージェント・pixiv・Wikipedia・facebook・Hulu
採用実績・Dropbox・github・Groupon・Yandex・Zynga・SourceForge
採用実績これら、多くの有名サービスでNginxが採用されています。某ソーシャルゲームのプラットフォームではApacheの使用を止め、ほぼ全てのサービスをNginxに移行しているそうです。
Nginxの概要
Nginxの概要NginxはオープンソースのWebサーバです。高い並行性と処理性能、メモリ使用量の小ささに重点を置いて開発されています。Unix系OS、Linux、BSD系OS、Mac OS X、Solaris、AIX、HP-UX、Micros...
Nginxの概要Nginxは処理が軽く、大量のリクエストを処理するのに向いています。リバースプロキシ、静的コンテンツの配信、ロードバランサ等の用途にNginxが多く採用されています。
Nginxの概要逆に、Nginxはcpuリソースがたくさん必要な処理には向いていません。処理時間が長くなる処理を実行した際、そこでプロセスがブロックされてしまい処理能力が落ちてしまいます。
Nginxが解決するとされる  C10K問題について 考えてみましょう。
ハード性能的に問題が無い。     しかし、クライアントの数が多くなるとサーバがパンクする場合があります。
なぜでしょうか。
プロセス番号が足りなくなる。UNIX系OSだとプロセス番号は符号付き16ビット整数、つまり最大32767です。
処理が小さいものはプロセスではなく、スレッドで解決したい。これを実現するのが、「イベントループ方式」です。最近話題の言語node.jsも同じ方式で開発されています。
「イベントループ方式」とはシングルスレッドでループ処理をまわし,キューに溜まったイベントを処理していく処理方式です。
Nginxのシェア世界中のWebサービスにおいて、Apache, IISに次ぐ3番目のシェアを持っています(11.8%)上位1万位までのサイトに限定すると、18%のシェアを持っています。2008年以降にコンスタントにシェアを伸ばし続けてきました...
Nginxのシェア(2012/12)
Nginxのシェア(2012/12)
Nginxの歴史
Nginxの歴史Nginxは2004年に、Ramblerというロシアの検索エンジンやその関連サイトにおけるニーズを満たすために開発されました。開発者はIgor Sysoevという1970年生まれのロシア人で、現在はNGINX社のCTOです。
Nginxの歴史ロシアを中心に開発されているNginxですが。ロシア国内の人気サイトにおいて、シェアは50%以上と言われています。
Nginxの用途
リバースプロキシ
リバースプロキシ特定多数のクライアントから寄せられる要求に対して、応答を肩代わりすることにより特定のサーバの負担を軽減したり、アクセスを制限したりします。これにより特定のサーバの負荷を軽減したり、セキュリティを高めたりする目的に用いられます。
静的コンテンツの配信(CDN)
静的コンテンツの配信(CDN)テキストや画像といった静的コンテンツの配信に多く用いられています。イベント駆動アーキテクチャにより、大量のリクエストを同時に処理できるスケーラビリティを備えているためです。
ロードバランサ
ロードバランサ外部ネットワークからのリクエストを一元的に管理し、同等の機能を持つ複数のサーバに要求を分散して送信する仕組みです。複数台のWebサーバやDBサーバで処理を分散する際などに用いられます。
WebサーバNginxの用途として従来はリバースプロキシや静的コンテンツ配信が主な用途でしたが、最近ではWebサーバとして活用する企業も増えています。PHPを動かす際には、PHP-FPMを使用します。PHP5.4に実装されているビルトインサーバ...
Nginxの設定
設定ファイル設定ファイルは「nginx.conf」を使用します。独自のDSL(DomainSpecificLanguage)で記述されています。代表的なWebサーバのApacheと比較しても、より直感的で柔軟に設定を行う事が可能です。
拡張モジュールWebサーバとしてのNginxの機能は、ほとんどが拡張モジュールとして実装されています。公式に提供されているもの意外にも、独自のモジュールを作成することが可能です。
アーキテクチャ
Nginxの概要Apache等の一般的なWebサーバとの大きな違いは、イベント駆動アーキテクチャを採用している事です。これによって、少量のプロセスだけで大量のリクエストを処理する事が可能です。
Nginxのリクエスト処理イメージ
Nginxの概要Apacheのpreforkはプロセス駆動アーキテクチャを持っています。これは、各リクエストをプロセスに割り合てて処理を行います。リクエストが大量に来た際、プロセスが同時起動するのでオーバーヘッドが非常に大きくなるというデメリッ...
Apache preforkのリクエスト処理イメージ
「スレッド」と「プロセス」
「スレッド」と「プロセス」スレッドプロセス内に作られる、一つのプログラム内で並列処理を行うための仕組み。リソースはスレッドを起動するプロセスのものが割り当てられる。
「スレッド」と「プロセス」プロセスプログラムの実行単位。OSからリソースの割当はプロセス単位で行われる。
最後に
Webサーバはこれまで長い間Apacheが主流でしたが、最近はNginx等の新しいプロダクトが登場しています。それぞれの特徴を理解して、サービスに最適なものを選択できるようにしていきましょう。
勉強会は以上になります。ご清聴ありがとうございました。
Upcoming SlideShare
Loading in …5
×

Nginx勉強会

10,478 views

Published on

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

  • Be the first to comment

Nginx勉強会

  1. 1. Nginx勉強会株式会社シーエー・アドバンス 大谷 祐司
  2. 2. はじめに今回の勉強会は、新しいWebサーバとして注目されているNginx(エンジンエックス)がテーマです。シーエー・アドバンスでもCSの業務システムで採用されており、高いパフォーマンスで安定稼働している実績があります。
  3. 3. 雑誌にも特集が組まれています
  4. 4. 入門書も出ています。
  5. 5. 採用実績・クックパッド・サイバーエージェント・pixiv・Wikipedia・facebook・Hulu
  6. 6. 採用実績・Dropbox・github・Groupon・Yandex・Zynga・SourceForge
  7. 7. 採用実績これら、多くの有名サービスでNginxが採用されています。某ソーシャルゲームのプラットフォームではApacheの使用を止め、ほぼ全てのサービスをNginxに移行しているそうです。
  8. 8. Nginxの概要
  9. 9. Nginxの概要NginxはオープンソースのWebサーバです。高い並行性と処理性能、メモリ使用量の小ささに重点を置いて開発されています。Unix系OS、Linux、BSD系OS、Mac OS X、Solaris、AIX、HP-UX、Microsoft Windowsで動作します。
  10. 10. Nginxの概要Nginxは処理が軽く、大量のリクエストを処理するのに向いています。リバースプロキシ、静的コンテンツの配信、ロードバランサ等の用途にNginxが多く採用されています。
  11. 11. Nginxの概要逆に、Nginxはcpuリソースがたくさん必要な処理には向いていません。処理時間が長くなる処理を実行した際、そこでプロセスがブロックされてしまい処理能力が落ちてしまいます。
  12. 12. Nginxが解決するとされる C10K問題について 考えてみましょう。
  13. 13. ハード性能的に問題が無い。 しかし、クライアントの数が多くなるとサーバがパンクする場合があります。
  14. 14. なぜでしょうか。
  15. 15. プロセス番号が足りなくなる。UNIX系OSだとプロセス番号は符号付き16ビット整数、つまり最大32767です。
  16. 16. 処理が小さいものはプロセスではなく、スレッドで解決したい。これを実現するのが、「イベントループ方式」です。最近話題の言語node.jsも同じ方式で開発されています。
  17. 17. 「イベントループ方式」とはシングルスレッドでループ処理をまわし,キューに溜まったイベントを処理していく処理方式です。
  18. 18. Nginxのシェア世界中のWebサービスにおいて、Apache, IISに次ぐ3番目のシェアを持っています(11.8%)上位1万位までのサイトに限定すると、18%のシェアを持っています。2008年以降にコンスタントにシェアを伸ばし続けてきましたが、2011年から一気にシェアが拡大しています。
  19. 19. Nginxのシェア(2012/12)
  20. 20. Nginxのシェア(2012/12)
  21. 21. Nginxの歴史
  22. 22. Nginxの歴史Nginxは2004年に、Ramblerというロシアの検索エンジンやその関連サイトにおけるニーズを満たすために開発されました。開発者はIgor Sysoevという1970年生まれのロシア人で、現在はNGINX社のCTOです。
  23. 23. Nginxの歴史ロシアを中心に開発されているNginxですが。ロシア国内の人気サイトにおいて、シェアは50%以上と言われています。
  24. 24. Nginxの用途
  25. 25. リバースプロキシ
  26. 26. リバースプロキシ特定多数のクライアントから寄せられる要求に対して、応答を肩代わりすることにより特定のサーバの負担を軽減したり、アクセスを制限したりします。これにより特定のサーバの負荷を軽減したり、セキュリティを高めたりする目的に用いられます。
  27. 27. 静的コンテンツの配信(CDN)
  28. 28. 静的コンテンツの配信(CDN)テキストや画像といった静的コンテンツの配信に多く用いられています。イベント駆動アーキテクチャにより、大量のリクエストを同時に処理できるスケーラビリティを備えているためです。
  29. 29. ロードバランサ
  30. 30. ロードバランサ外部ネットワークからのリクエストを一元的に管理し、同等の機能を持つ複数のサーバに要求を分散して送信する仕組みです。複数台のWebサーバやDBサーバで処理を分散する際などに用いられます。
  31. 31. WebサーバNginxの用途として従来はリバースプロキシや静的コンテンツ配信が主な用途でしたが、最近ではWebサーバとして活用する企業も増えています。PHPを動かす際には、PHP-FPMを使用します。PHP5.4に実装されているビルトインサーバと同じモジュールです。
  32. 32. Nginxの設定
  33. 33. 設定ファイル設定ファイルは「nginx.conf」を使用します。独自のDSL(DomainSpecificLanguage)で記述されています。代表的なWebサーバのApacheと比較しても、より直感的で柔軟に設定を行う事が可能です。
  34. 34. 拡張モジュールWebサーバとしてのNginxの機能は、ほとんどが拡張モジュールとして実装されています。公式に提供されているもの意外にも、独自のモジュールを作成することが可能です。
  35. 35. アーキテクチャ
  36. 36. Nginxの概要Apache等の一般的なWebサーバとの大きな違いは、イベント駆動アーキテクチャを採用している事です。これによって、少量のプロセスだけで大量のリクエストを処理する事が可能です。
  37. 37. Nginxのリクエスト処理イメージ
  38. 38. Nginxの概要Apacheのpreforkはプロセス駆動アーキテクチャを持っています。これは、各リクエストをプロセスに割り合てて処理を行います。リクエストが大量に来た際、プロセスが同時起動するのでオーバーヘッドが非常に大きくなるというデメリットがあります。
  39. 39. Apache preforkのリクエスト処理イメージ
  40. 40. 「スレッド」と「プロセス」
  41. 41. 「スレッド」と「プロセス」スレッドプロセス内に作られる、一つのプログラム内で並列処理を行うための仕組み。リソースはスレッドを起動するプロセスのものが割り当てられる。
  42. 42. 「スレッド」と「プロセス」プロセスプログラムの実行単位。OSからリソースの割当はプロセス単位で行われる。
  43. 43. 最後に
  44. 44. Webサーバはこれまで長い間Apacheが主流でしたが、最近はNginx等の新しいプロダクトが登場しています。それぞれの特徴を理解して、サービスに最適なものを選択できるようにしていきましょう。
  45. 45. 勉強会は以上になります。ご清聴ありがとうございました。

×