Mais conteúdo relacionado
Semelhante a EC2でNginxを使ってみよう JAWS大阪第9回勉強会資料 (20)
EC2でNginxを使ってみよう JAWS大阪第9回勉強会資料
- 10. 採用サービス
Facebook
Drop box
Hulu
Nginxとは?
2
Wikipedia
Git hub
pixiv
クックパッド
などなど多くの企業で使われています。
- 11. WEBサーバのシェア
Netcraft社調査
Nginxとは?
3
Developer
Apache
July 2013
Percent
August 2013
Percent
Change
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
- 13. php-fpmのインストール
# yum install php php-devel php-fpm
# chkconfig php-fpm on
とりあえず
インストール
2
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
- 14. Nginx のインストール
必要モジュールのインストール
# yum install pcre pcre-devel openssl openssl-devel gcc
ユーザの追加
とりあえず
インストール
3
# useradd –s /sbin/nologin –d /usr/local/nginx 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 --withhttp_ssl_module --with-http_realip_module
# make
# make install
- 15. logrotateの設定
# vim /etc/logrotated/nginx
/var/log/nginx/*log {
missingok
とりあえず
インストール
4
Notifempty
Sharedscripts
rotate 12
Weekly
Compress
Postrotate
kill -USR1 `cat /var/run/nginx.pid`
Endscript
}
- 16. 起動スクリプト
# vim /etc/init.d/niginx
起動スクリプトのパーミッションの変更
とりあえず
インストール
5
# chmod 755 /etc/init.d/niginx
コンフィグ設定
# vim /usr/local/nginx/conf/nginx.conf
Nginxの起動
# /etc/init.d/nginx start
- 17. nginx.confの要点1
worker_processes 1;
# CPUコア数に揃える
worker_rlimit_nofile 4096;
nginx.confの要
点1
#ファイルの同時オープン数(ApacheのServerLimit )
worker_connections 4096;
# workerの同時接続数(ApacheのMaxClients)
server_tokens off;
#ApacheのServerTokens と同じ
- 19. location ~ .php$ {
nginx.confの要
点3
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を使う設定
- 20. nginxユーザのファイルディスクリプタの上限
を変更
# vi /etc/security/limits.conf
nginx
OS側も
ちょっと設定
soft nofile 4096
nginx
hard nofile 4096
システム全体のファイルディスクリプタの制限
をアップ
# vi /etc/sysctl.conf
fs.file-max = 50000
- 23. Rewriteの記述が変わる
Apache
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^beyondjapan.com$ [NC]
RewriteRule ^(.*)$ http://www.beyondjapan.com/$1 [R=301,L]
Apacheとの
違い2
</IfModule>
⇓あら簡単
Nginx
server {
server_name beyondjapan.com;
rewrite ^(.*)$ http://www.beyondjapan.com$1 ;
}
- 24. Apache
プロセスで処理(preforkの場合)※workerもある
プロセス駆動アーキテクチャ
リクエストが大量に来た際、プロセスが同時起動
するのでオーバヘッドが大きくなるデメリット
重い処理は比較的得意
Apacheとの
違い3
Nginx
スレッドで処理
イベント駆動アーキテクチャ
少ないプロセスでより多くのアクセスが捌ける
1つの処理時間が長くなる処理を実行した際、そこ
でプロセスがブロックされ処理能力が低下する
つまり、大量アクセスにはNginx、
1処理が重いならApache
- 25. FPM
FastCGI Process Manager
PHP の FastCGI 実装のひとつ
PHP-FPM
(FastCGI)
高負荷のサイトで有用な追加機能がある
(slowlog出力など)
対応バージョン
PHP 5.3.3からバンドル
PHP 5.4.0 からPHP公式サポート
プロトコル:FastCGI
FastCGIはプロセスをメモリ上に永続化して使い
まわすことによって負荷を軽減する
- 26. slowlogを出力することができる
N秒以上かかるアクセスを検出
N秒時点でのバックトレースも取れる
slowlogを出力する閾値(秒)
request_slowlog_timeout = 2
PHP-FPMの
独自機能
(1)
slowlogの出力先
slowlog = /var/log/php-fpm/www-slow.log
該当ファイルの、一番最初にN秒を超えたもの
しかトレースしない。
※ 全てをトレースするわけではない
もしかしたらやり方があるのかも。。。
こんな感じでログ
が出力される
- 29. リクエスト回数:2 0
リクエスト回数:5 0
リクエスト回数:1 0 0
リクエスト回数:2 0 0
リクエスト回数:4 0 0
A p a ch e
3 5 ミリ秒
3 6 ミリ秒
6 0 ミリ秒
1 2 2 ミリ秒
2 5 0 ミリ秒
N gi x
n
3 5 ミリ秒
3 7 ミリ秒
4 3 ミリ秒
4 0 ミリ秒
5 7 ミリ秒
ab結果 静的コンテンツ
300 ミリ秒
250 ミリ秒
200 ミリ秒
静的コンテンツ
ベンチマーク
150 ミリ秒
100 ミリ秒
50 ミリ秒
0 ミリ秒
リクエスト回数:20 リクエスト回数:50 リクエスト回数:100リクエスト回数:200リクエスト回数:400
Apache
Nginx
- 31. リクエスト回数:2 0
リクエスト回数:5 0
リクエスト回数:1 0 0
リクエスト回数:2 0 0
リクエスト回数:4 0 0
A p a ch e
3 0 0 5 ミリ秒
7 3 4 4 ミリ秒
1 2 7 1 8 ミリ秒
1 9 5 2 4 ミリ秒
4 1 8 8 9 ミリ秒
N gi x
n
3 1 9 3 ミリ秒
6 1 1 5 ミリ秒
9 4 0 1 ミリ秒
1 7 7 5 2 ミリ秒
4 8 9 4 4 ミリ秒
ab結果 動的コンテンツ
60000 ミリ秒
50000 ミリ秒
40000 ミリ秒
動的コンテンツ
ベンチマーク
30000 ミリ秒
20000 ミリ秒
10000 ミリ秒
0 ミリ秒
Apache
Nginx