• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
第2回勉強会資料 岩本(配布用)
 

第2回勉強会資料 岩本(配布用)

on

  • 546 views

 

Statistics

Views

Total Views
546
Views on SlideShare
546
Embed Views
0

Actions

Likes
1
Downloads
3
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    第2回勉強会資料 岩本(配布用) 第2回勉強会資料 岩本(配布用) Presentation Transcript

    • Nginxのおはなし いらちな現代人のためのWEBサーバ
    • とりあえず 自己紹介  名前 岩本 貴久  所属 株式会社ビヨンド  生息地 おなか吹田市  仕事 セールスエンジニア  年齢 31歳  インテリアが大好き  「いわもん」と呼ばれたり呼ばれなかったり  好きな食べ物 パイナップル ラムネ 鶏肉  好きな観光地 自宅(引きこもり)
    • いらちな 人々 2009年 Akamai社の調査結果  Q1: WEBサイトの表示にどれぐらい時間がかかると 「遅い」と感じるか?  A1: 約半数のユーザーは、ページ表示の待ち時間が2秒 を超えるとイライラし始める。  Q2: WEBサイトの読み込みが何秒で終わることを期待 するか?  A2: 47%の消費者が「2秒」と回答。  2006年の調査では4秒という判断であり、 3年でユーザーはかなりせっかちになっている。
    • サイトを 高速化する 理由  コンバージョン率の最適化  カスタマーエクスペリエンスと カスタマー満足度の向上  直帰率を下げる。  競争率が非常に激しいキーワードで オーガニックからのトラフィックを増やす。  全体的な競争力を高める。  運用費を節約する。
    • 数字で見る ページ スピード  Googleではページスピードが検索の1%に影響してい る。  ユーザーがページ表示に待てるのは2秒まで。  3秒以上かかると40%以上のユーザーは離脱する。  表示が1秒遅れるごとにコンバージョン率は7%落ちる。  表示が1秒遅れるごとに顧客満足度は16%落ちる。  速いサイトはインフラにかかるコストを 50%かそれ以上削減する。
    • つまり 早いは正義! ( ー`дー´)キリッ
    • じゃあ 早くするよ インフラ面で考えてみる  サーバ・ネットワークを増強  ⇒ お金がかかります  (ミドルウェアの)チューニング  ⇒ 効果が薄い  根本的に早くするには、 WEBサーバを入れ替えてしまえ!!  ⇒ Nginxが早いらしい!! (*´∀`*)ポワワ
    • ここまで、 前振り。 で、本題です。 本当の戦いはこれからだっ!!
    • 本日の アジェンダ  Nginxとは?  とりあえず、インストール  Apacheとの違い  ベンチマーク!  php-cgiを分離してみる  今日のまとめっ!
    • Nginxとは? 1  「えんじんえっくす」と読みます。  特徴  高い並列性  処理性能  メモリ使用量の少なさ  処理が軽い  大量リクエストの処理にも向いている  他にも  リバースプロキシ  メールプロキシ  ロードバランサ  WAF
    • Nginxとは? 2  採用サービス  クックパッド  サイバーエージェント  Wikipedia  Facebook  Hulu  DropBox  グルーポン
    • Nginxとは? 3 Developer July 2013 Percent August 2013 Percent Change Apache 364,696,792 52.19% 336,622,050 46.96% -5.23 Microsoft 137,351,211 19.65% 163,098,703 22.75% 3.10 nginx 95,017,255 13.60% 104,311,568 14.55% 0.96 Google 27,406,059 3.92% 30,550,914 4.26% 0.34 Netcraft社調査 WEBサーバのシェア
    • とりあえず インストール 1 要件  Nginxはソースインストール  PHPはFast-CGIで実行し、 Nginx⇔PHP間はFast-CGI+UnixSocketで通信する
    • とりあえず インストール 2  php-fpmのインストール # yum install php php-devel php-fpm # chkconfig php-fpm on  php-fpm の設定 # vim /etc/php-fpm.d/www.conf # UnixSocketで通信 listen = /var/run/php-fpm/www.sock user = nginx group = nginx  php-fpmの起動 # /etc/init.d/php-fpm start
    • とりあえず インストール 3 Nginx のインストール  必要モジュールのインストール # yum install pcre pcre-devel openssl openssl-devel gcc  ユーザの追加 # useradd –s /sbin/nologin –d /usr/local/nginx -M nginx  ソースからのインストール # cd /usr/local/src # wget http://nginx.org/download/nginx-1.2.3.tar.gz # tar zxvf nginx-1.2.3.tar.gz # cd nginx-1.2.3 # ./configure --user=nginx --group=nginx --with- http_ssl_module --with-http_realip_module # make # make install
    • とりあえず インストール 4  logrotateの設定 # vim /etc/logrotated/nginx /var/log/nginx/*log { missingok Notifempty Sharedscripts rotate 12 Weekly Compress Postrotate kill -USR1 `cat /var/run/nginx.pid` Endscript }
    • とりあえず インストール 5  起動スクリプト # vim /etc/init.d/niginx ~長くて収まりませんでした。 m(_ _)m ~  起動スクリプトのパーミッションの変更 # chmod 755 /etc/init.d/niginx
    • とりあえず インストール 6  コンフィグ設定 # vim /usr/local/nginx/conf/nginx.conf ~長くて収まりませんでした。 m(_ _)m ~  Nginxの起動 # /etc/init.d/nginx start
    • とりあえず インストール 7 nginx.confの要点1  worker_processes 8; #CPUコア数に揃える  worker_rlimit_nofile 8192; #ファイルの同時オープン数(ApacheのMaxClients)  worker_connections 8192; # workerの同時接続数(ApacheのMaxClients)  server_tokens off; #ApacheのServerTokens と同じ
    • とりあえず インストール 8 nginx.confの要点2  sendfile on; #ファイル読み書きの効率化  tcp_nopush # sendfile がonの時、パケットの効率化  keepalive_timeout 0; #ApacheのKeepaliveと同じ(0=off)
    • とりあえず インストール 9 nginx.confの要点3  location ~ .php$ {  include /usr/local/nginx/conf/fastcgi_params;  fastcgi_pass unix:/tmp/php.socket;  fastcgi_index index.php;  fastcgi_param SCRIPT_FILENAME /var/www/vhosts/beyondjapan.com$fastcgi_script_ name;  }  # fcgiを使う設定
    • とりあえず インストール 10 今まで内容を ⇓ Ctrl +A:全選択 ⇓ Ctrl +C:コピー ⇓ Ctrl +V:ペースト ⇓ 以上っ! ヽ(*´∀`)ノ キャッホーイ!!
    • Apacheとの 違い1  .htacsess が使えない  mod_phpが使えない  Rewriteの記述が変わる  プロセス型とスレッド型
    • Apacheとの 違い2  htacsess が使えない ⇒ confにベタ書きしか方法が。(要再起動)  mod_phpが使えない ⇒ fast-cgiを使って下さい。
    • Apacheとの 違い3  Rewriteの記述が変わる  Apache <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} ^beyondjapan.com$ [NC] RewriteRule ^(.*)$ http://www.beyondjapan.com/$1 [R=301,L] </IfModule> ⇓あら簡単  Nginx server { server_name beyondjapan.com; rewrite ^(.*)$ http://www.beyondjapan.com$1 ; }
    • Apacheとの 違い4  プロセス型とスレッド型  Apache  プロセスで処理  プロセス駆動アーキテクチャ  リクエストが大量に来た際、プロセスが同時起動 するのでオーバヘッドが大きくなるデメリット  Nginx  スレッドで処理  イベント駆動アーキテクチャ  1つの処理時間が長くなる処理を実行した際、そこ でプロセスがブロックされ処理能力が低下する  つまり、大量アクセスにはNginx、 1処理が重いならApache
    • みんな大好き ベンチマーク  ベンチマーク環境  AWS EC2 (AmazonLinux) +Wordpress  AWS RDS
    • みんな大好き ベンチマーク リクエスト回数:20 リクエスト回数:50 リクエスト回数:100 リクエスト回数:200 リクエスト回数:400 A pache 35 ミリ秒 36 ミリ秒 60 ミリ秒 122 ミリ秒 250 ミリ秒 N ginx 35 ミリ秒 37 ミリ秒 43 ミリ秒 40 ミリ秒 57 ミリ秒 0 ミリ秒 50 ミリ秒 100 ミリ秒 150 ミリ秒 200 ミリ秒 250 ミリ秒 300 ミリ秒 リクエスト回数:20 リクエスト回数:50 リクエスト回数:100リクエスト回数:200リクエスト回数:400 ab結果 静的コンテンツ Apache Nginx
    • みんな大好き ベンチマーク リクエスト回数:20 リクエスト回数:50 リクエスト回数:100 リクエスト回数:200 リクエスト回数:400 A pache 3005 ミリ秒 7344 ミリ秒 12718 ミリ秒 19524 ミリ秒 41889 ミリ秒 N ginx 3193 ミリ秒 6115 ミリ秒 9401 ミリ秒 17752 ミリ秒 48944 ミリ秒 0 ミリ秒 10000 ミリ秒 20000 ミリ秒 30000 ミリ秒 40000 ミリ秒 50000 ミリ秒 60000 ミリ秒 ab結果 動的コンテンツ Apache Nginx
    • php-cgiを 分離してみる 1  ベンチマーク環境  AWS EC2 (AmazonLinux) +Wordpress  AWS EC2 php-fpm用  AWS RDS
    • php-cgiを 分離してみる 2  php-fpm  ; listen = /var/run/php-fpm/www.sock  listen = 0.0.0.0:9000  ; listen.allowed_clients = 127.0.0.1  コメントアウト  Nginx  #fastcgi_pass unix:/tmp/php.socket;  fastcgi_pass 192.168.101.20:9000;
    • php-cgiを 分離してみる 3 0 ミリ秒 10000 ミリ秒 20000 ミリ秒 30000 ミリ秒 40000 ミリ秒 50000 ミリ秒 60000 ミリ秒 ab結果 動的コンテンツ Apache Nginx Nginx+php-fpm リクエスト回数:20 リクエスト回数:50 リクエスト回数:100 リクエスト回数:200 リクエスト回数:400 A pache 3005 ミリ秒 7344 ミリ秒 12718 ミリ秒 19524 ミリ秒 41889 ミリ秒 N ginx 3193 ミリ秒 6115 ミリ秒 9401 ミリ秒 17752 ミリ秒 48944 ミリ秒 N ginx+ php-fpm 1985 ミリ秒 4198 ミリ秒 9309 ミリ秒 25010 ミリ秒 41538 ミリ秒
    • php-cgiを 分離してみる 4 あれ・・・?( ゚д゚)ポカーン
    • php-cgiを 分離してみる 5  理想  PHPとWEBを分けたから、倍の速度出るだろう  +(0゚・∀・) + ワクテカ + と  現実  1台構成と大差ない  (´Д`|||) ドヨーン
    • php-cgiを 分離してみる 5  この後、  Nginx+php-fpm 構成x2 と Nginx x1 + php-fpmx1 構成の ベンチマークを考えていたけど 割愛
    • 本日の まとめっ!  Nginxは静的コンテンツ爆速  特に、大量アクセスだと俺のターン  PHPプログラムを動かすには、別途fcgiがいる  このfcgiをなんとかすればなんとかなる  ホントは、Nginxとphp-fpmを分離して ヤッホイヽ(・∀・ )ノ と書きたかった  早くするなら(phpが動く)サーバ増やせ!
    • おわり  ご清聴ありがとうございました