キャッシュについてのあれこれ
弊プロジェクトでは3種類のキャッシュを利用していて、違いがわからなかったので調査したものをまとめました
memcached
key-value store型のキャッシュ
主にRDBMSにおけるクエリの結果などを保存しておく
揮発性が高い?
from: http://gihyo.jp/dev/feature/01/memcached/0001
キャッシュクリア方法
/etc/init.d/memcached restart
CDN(Content Delivery Network)
様々なところにサーバを配置して、ネットワーク的に(≒物理的に)距離が近いサーバからキャッシュを取得する
これによって、
- 地域によってレスポンスが遅くなるような状況を防ぐ
- 処理の負荷分散
を実現する
キャッシュクリア方法
webページで操作して削除
弊pjではcurlコマンドを叩くことでcui上で操作している
APCU(Alternative Php Cache(APC) User cache)
APCがAPCuとZend OPcacheに取って代わられたワケ - Qiita
PHPのキャッシュ
webサーバ(apache, nginxなど)にキャッシュが保存される
キャッシュクリア方法
gracefulをする
# apache service httpd graceful /etc/init.d/httpd graceful # nginx service nginx graceful /etc/init.d/nginx graceful
「/etc/init.d/xxx start」と「service xxx start」の違い
service xxx
を使ったほうがよさげ?
APCUはwebサーバ上にあるので、restart
すると一時的にサーバに接続できなくなってしまう
なので、かわりにgraceful
を利用する
※gracefulの仕組み
すべての子プロセスの処理後に、再起動命令を走らせる
その後、親プロセスは設定ファイルの再読込を実行
これにより、サーバーがダウンすることなく、あたかも生きたまま設定の反映ができるようになる
補足:apache, nginx
webサーバのOSS
webサーバとして利用するマシンにインストールして、ホスティングを行う
昔はapacheが主流だったが、最近(2016くらいから?)はnginxも主流になりつつある
apache, nginxを再起動したら、apucキャッシュは削除される