Nginx+PHPキャッシュの詳細
4499 ワード
Nginxキャッシュnginxには2つのキャッシュメカニズムがあります:fastcgi_Cacheとproxy_Cache次はこの2つのキャッシュメカニズムの違いを説明しましょうproxy_Cacheの役割はバックエンドサーバのコンテンツをキャッシュすることであり、静的および動的fastcgiを含む任意のコンテンツである可能性がある.Cacheの役割はfastcgiが生成したコンテンツをキャッシュすることであり、phpが生成した動的コンテンツproxy_であることが多い.Cacheキャッシュはnginxとバックエンドの通信回数を減少させ、伝送時間とバックエンド帯域幅fastcgi_を節約した.Cacheキャッシュはnginxとphpの通信回数を減少させ,phpとデータベースの圧力をさらに軽減した.proxy_Cacheキャッシュ設定
fastcgi_Cacheキャッシュ設定
総じてnginxのproxy_Cacheとfastcgi_Cacheのキャッシュ構成はそれほど悪くありません.
--------------------------------------------------------------------------------
memcacheキャッシュmemcacheキャッシュについて議論する前に、mysqlのメモリキャッシュについて理解しておきましょう.
mysqlのメモリキャッシュはmy.cnfで指定したサイズ:メモリテーブルはテンポラリテーブルとは異なり、テンポラリテーブルもメモリに格納されます.テンポラリテーブルの最大メモリはtmp_を通過する必要があります.table_size=128 M設定.データがテンポラリ・テーブルの最大値設定を調べた場合、自動的にディスク・テーブルに移行します.この場合、IO操作が必要なため、性能が大幅に低下しますが、メモリ・テーブルはできません.メモリがいっぱいになると、データがいっぱいになると、エラーが表示されます.
例:
メモリテーブルのプロパティ:1.メモリテーブルのテーブル定義はディスクに格納、拡張子は.frmなので再起動は失われません
2.メモリテーブルのデータはメモリに保存されており、再起動するとデータが失われる
3.メモリテーブルは一定の長さフォーマットを使用する
4.メモリテーブルはblobまたはtext列をサポートしていません.例えばvarcharとtextフィールドはサポートされません.
5.メモリテーブルはauto_をサポートするincrementカラムとnull値を含むカラムへのインデックス
6.メモリテーブルはサポートされていません
7.メモリ・テーブルはテーブル・ロックであり、変更が頻繁な場合、パフォーマンスが低下する可能性があります.
次にmemcacheを見てみましょう.相対的にmysqlのメモリテーブルの制限が多いです.
memcacheの用途1.システムの同時性の向上
2.データベースの負担軽減
注意:memcache linuxシステム32ビットは4 Gメモリのみをサポートし、memcacheの最長保存時間は30日です.
# :proxy_temp_path proxy_cache_path
proxy_temp_path /data0/proxy_temp_dir;
# Web cache_one, 200MB,1 , 30GB。
proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
server
{
listen 80;
server_name www.yourdomain.com 192.168.8.42;
index index.html index.htm;
root /data0/htdocs/www;
location /
{
# 502、504、 , upstream , 。
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache cache_one;
# HTTP
proxy_cache_valid 200 304 12h;
# 、URI、 Web Key ,Nginx Key ,
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://backend_server;
expires 1d;
}
# , URL http://192.168.8.42/test.txt, http://192.168.8.42/purge/test.txt URL 。
location ~ /purge(/.*)
{
# IP IP URL 。
allow 127.0.0.1;
allow 192.168.0.0/16;
deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
}
# .php、.jsp、.cgi 。
location ~ .*\.(php|jsp|cgi)?$
{
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://backend_server;
}
access_log off;
}
}
fastcgi_Cacheキャッシュ設定
#
fastcgi_cache_path /tt/cache levels=1:2 keys_zone=NAME:2880m inactive=2d max_size=10G;
# url
fastcgi_cache_key "$scheme$request_method$host$uri$arg_filename$arg_x$arg_y";
server {
listen 8080;
server_name www.example .com;
location / {
root /www;
index index.html index.htm index.php;
}
location ~ (|.php)$ {
root /www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_cache NAME;
fastcgi_cache_valid 200 48h;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
# cookie,
fastcgi_pass_header Set-Cookie;
}
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /httplogs/access.log access;
}
総じてnginxのproxy_Cacheとfastcgi_Cacheのキャッシュ構成はそれほど悪くありません.
--------------------------------------------------------------------------------
memcacheキャッシュmemcacheキャッシュについて議論する前に、mysqlのメモリキャッシュについて理解しておきましょう.
mysqlのメモリキャッシュはmy.cnfで指定したサイズ:メモリテーブルはテンポラリテーブルとは異なり、テンポラリテーブルもメモリに格納されます.テンポラリテーブルの最大メモリはtmp_を通過する必要があります.table_size=128 M設定.データがテンポラリ・テーブルの最大値設定を調べた場合、自動的にディスク・テーブルに移行します.この場合、IO操作が必要なため、性能が大幅に低下しますが、メモリ・テーブルはできません.メモリがいっぱいになると、データがいっぱいになると、エラーが表示されます.
例:
create table test
(
id int unsigned not null auto_increment primary key
state char(10),
type char(20),
date char(30)
)engine=memory default charset=utf8
メモリテーブルのプロパティ:1.メモリテーブルのテーブル定義はディスクに格納、拡張子は.frmなので再起動は失われません
2.メモリテーブルのデータはメモリに保存されており、再起動するとデータが失われる
3.メモリテーブルは一定の長さフォーマットを使用する
4.メモリテーブルはblobまたはtext列をサポートしていません.例えばvarcharとtextフィールドはサポートされません.
5.メモリテーブルはauto_をサポートするincrementカラムとnull値を含むカラムへのインデックス
6.メモリテーブルはサポートされていません
7.メモリ・テーブルはテーブル・ロックであり、変更が頻繁な場合、パフォーマンスが低下する可能性があります.
次にmemcacheを見てみましょう.相対的にmysqlのメモリテーブルの制限が多いです.
memcacheの用途1.システムの同時性の向上
2.データベースの負担軽減
注意:memcache linuxシステム32ビットは4 Gメモリのみをサポートし、memcacheの最長保存時間は30日です.