$30 off During Our Annual Pro Sale. View Details »

PHP で学ぶ Cache の距離の話 / study_cache_with_php

PHP で学ぶ Cache の距離の話 / study_cache_with_php

PHPerKaigi 2023 登壇資料

Ryo Tomidokoro

March 23, 2023
Tweet

More Decks by Ryo Tomidokoro

Other Decks in Technology

Transcript

  1. @hanhan1978 • 富所 亮 • 所属 株式会社カオナビ BackEnd Re-architecturing Team

    (BERT) • 職業 バックエンドエンジニア • ブログ https://blog.hanhans.net • Yokohama North AM https://anchor.fm/yokohama-north-am 2
  2. 例 : 宅配便 1. 荷受け場所 → 地域の中継施設 → 県の中継施設 <<

    大型輸送手段で一気に運ぶ >> 2. 県の中継施設 → 地域の中継施設 → 最寄の宅配便 15
  3. 18 プログラマーのためのCPU入門 : 第五章 キャッシュメモリ より CPU - 命令キャッシュ -

    データキャッシュ 命令流の高密度化が損なわれる ことを緩和
  4. 35 距離が変わらない Cache Redis 10,000 GET 600 ms MySQL 10,000

    SELECT 800 ms 演算がボトルネックではない上に データIOも距離が変わってない
  5. 36 距離が変わらない Cache Redis 10,000 GET 600 ms MySQL 10,000

    SELECT 800 ms 演算がボトルネックではない上に データIOも距離が変わってない レスポンスタイム向上が目的だとしたら失敗 DBコネクション数の削減なら成功 → 目的がとっても大事
  6. PHP で使える Cache とレイテンシ - データベース 500 μs - Redis

    (KVS) 500 μs - ファイル 16 μs - メモリ 100 ns ( 0.1 μs) 38
  7. 41 距離を変える Redis 10,000 GET 57 ms MySQL 10,000 SELECT

    800 ms 距離を変えたので IO バッファが効い た
  8. PHP における Cache の注意点 - Serialize, Unserialize のコスト - Cache

    機構自体が備える安全担保のコスト 巨大データをキャッシュしても、データ取得後の unserialize にコストがか かるので、キャッシュの旨味が少ないときがある 49
  9. 配列5000件を cache → 10,000 回取得 - apcu 6.4 sec -

    immutable_cache 67 msec 実測することで、cache 処理自体への理解も進む 54
  10. メモリ Cache の注意点 - 複数台構成だと Cache アウトを制御しづらい - サーバーA では最新、サーバーB

    では古いなどが発生 キャッシュの新旧チェックや、生存期間を考慮する必要がないデータに限 定するなど、工夫が必要 56