しがないエンジニアのブログ

技術的な内容をメモ代わりにつらつら

キャッシュについてのあれこれ

弊プロジェクトでは3種類のキャッシュを利用していて、違いがわからなかったので調査したものをまとめました

memcached

key-value store型のキャッシュ
主にRDBMSにおけるクエリの結果などを保存しておく
揮発性が高い?

0001-01.png
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キャッシュは削除される

ApacheとNginxについて比較 - Qiita