Nginx+PHP-FPMのTuning設定
Nginxとphp-fpm上で動いているWordPressの表示速度を最適化するために調べたときの覚書。
環境: CentOS 5.8 64bit, nginx 1.2.4, php-fpm 5.3.17
参考にしたのは下記Site.
目次
# cat /proc/cpuinfo |grep processor
最後が「processor:15」ならコア数は16。これをnginxのworker_processesに設定する
# vi /etc/nginx/nginx.conf
【2019/04/03 追記】
worker_processes auto;
でコア数を自動設定してくれる。
体感では早くなったのか分からない。。。設定が悪いのかな?
参考:nginx で Too many open files エラーに対処する - Shin x blog
# vi /etc/nginx/nginx.conf
# /etc/rc.d/init.d/nginx restart
【2019/04/03 追記】
確認方法
nginxのプロセスIDを取得
# pidof nginx
そのプロセスIDの制限情報を表示
# cat /proc/13515/limits
速度の計測はGoogle ChromeのDeveloper Toolsを使うと簡単。詳しくは前の記事を参考に。
< 2012/11/26 Modified >
WordPressのAjaxで処理する箇所(wp-load.php)のみgzipを有効にしてみた。
WordPressとMySQLの設定は下記記事も参考に。
< Related Posts >
環境: CentOS 5.8 64bit, nginx 1.2.4, php-fpm 5.3.17
参考にしたのは下記Site.
- Nginx and PHP-FPM Configuration and Optimizing Tips and Tricks
- nginx設定の検証(worker_processes、worker_cpu_affinity) | 楽しく情報処理技術者試験
- Nginxを使ったもう一歩進んだWordPressチューニング | cloudrop
- apache のかわりにnginxを使ってみる(6) nginx でgzipを使うには | レンタルサーバー・自宅サーバー設定・構築のヒント
- Nginx | WordPress Codex
目次
- ServerのCPU数に合わせてnginxを設定
- nginxのfastcgi cacheを設定
- 「Too many open files」対策
- gzipを有効にしてTraffic量を軽減する
1.ServerのCPU数に合わせてnginxを設定
ServerのCPU Core数を確認。# cat /proc/cpuinfo |grep processor
最後が「processor:15」ならコア数は16。これをnginxのworker_processesに設定する
# vi /etc/nginx/nginx.conf
worker_processes 16;
【2019/04/03 追記】
worker_processes auto;
でコア数を自動設定してくれる。
2.nginxのfastcgi cacheを設定
PHPの実行結果をcacheする設定をnginxに追記http {詳しくはOfficial Documentを参考に。
...
fastcgi_cache_path /var/cache/nginx/fastcgi_temp/cache levels=1:2 keys_zone=wpcache:500m inactive=60m;
server {
...
location ~* \.php$ {
...
# fastcgi cache
fastcgi_cache wpcache;
fastcgi_cache_key "$scheme://$host$request_uri";
fastcgi_cache_valid 200 10m;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid 404 1m;
fastcgi_buffer_size 16k;
fastcgi_buffers 128 16k;
}
}
...
}
体感では早くなったのか分からない。。。設定が悪いのかな?
3.「Too many open files」対策
(2014/10/03 追記)開発用サーバーで「Too many open files」エラーログが頻発するので、調べてみるとworker_rlimit_nofileを設定するといいらしい。参考:nginx で Too many open files エラーに対処する - Shin x blog
# vi /etc/nginx/nginx.conf
worker_rlimit_nofile 4096;# /etc/rc.d/init.d/nginx configtest
events {
worker_connections 1024;
}
# /etc/rc.d/init.d/nginx restart
【2019/04/03 追記】
確認方法
nginxのプロセスIDを取得
# pidof nginx
そのプロセスIDの制限情報を表示
# cat /proc/13515/limits
4.gzipを有効にしてTraffic量を軽減する
nginxのconfに追記server {実際gzipを有効にすると、遅くなったところがあるので今のところ無効にすることにした。
gzip on;
gzip_types text/plain
text/xml
text/css
application/xml
application/xhtml+xml
application/rss+xml
application/atom_xml
application/javascript
application/x-javascript
application/x-httpd-php;
gzip_disable "MSIE [1-6]\.";
gzip_disable "Mozilla/4";
gzip_buffers 64 8k;
gzip_min_length 1000;
}
速度の計測はGoogle ChromeのDeveloper Toolsを使うと簡単。詳しくは前の記事を参考に。
< 2012/11/26 Modified >
WordPressのAjaxで処理する箇所(wp-load.php)のみgzipを有効にしてみた。
location ~ /wp-load\.php {
gzip on;
gzip_disable "MSIE [1-6]\.";
gzip_disable "Mozilla/4";
gzip_buffers 64 8k;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
include fastcgi_params;
client_max_body_size 20M;
}
location ~* \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
include fastcgi_params;
client_max_body_size 20M;
}
WordPressとMySQLの設定は下記記事も参考に。
< Related Posts >