ggdG:wq

個人的なメモとか書いてます。

達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践を読んだ

達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践を読みました。
発売されてすぐに会社で買ってもらってたんですが、積んでしまっていました。やっと読んだのでメモっときます。

感想

Webサービスの高速化のために必要な知識を解説してくれる本です。
タイトルにISUCON が入っているので、ISUCON参加する人向けの本かと思っていましたが、Webアプリケーションの開発、運用等に関わる人なら知っておくと良い内容が多数ありました。
private-isu というWebサービスを題材にして、どのように変更を加えればチューニング出来るかをソースコードレベルで解説しており、プロファイリングの際に利用するコマンドも出力結果の読み方から各要素の細かな解説まで書かれているため、読みやすくかつ分かりやすかったです。
出力例等が豊富なので、本の厚さに対して読むのにそこまで時間もかかりませんでした。 (めっちゃ長いこと積みましたが...)
オススメです。

読書メモ

## Chapter1

- パフォーマンスチューニングの基本的な話

## Chapter2

- モニタリングの話

## Chapter3

- Webアプリケーションのベンチマーク
- 負荷試験
- ログの解析によるボトルネック発見
    - alp
    - MySQLスロークエリログ
        - `mysqldumpslow`
        - explain

## Chapter4

- ベンチマーカーの作成方法
    - 負荷試験ツール k6
- ベンチマーカーの作成については、全く知らなかったので面白い

## Chapter5

- データベースのチューニング
- pt-query-digest
- `private-isu` を例に実際にN+1問題の解決のための修正コードを解説付きで載せてくれている
    - 分かりやすい

## Chapter6

- リバースプロキシ
- nginxを例

## Chapter7

- キャッシュ
    - memcached
    - Redis
- メリット
    - 負荷低減
        - →コスト削減
    - リクエストをよりさばけるように
- デメリット
    - データ不整合の可能性
        - キャッシュの削除・更新をちゃんとやらないと
            - 場合によってはセキュリティリスクもある
                - 意図しないデータ表示しちゃったり
- TTLは十分に短く
- GoでのCache例
    - これは知ってたので読み飛ばす

## Chapter8

- 高速化テクニック
    - 外部コマンドではなく、ライブラリ利用
    - ログ出力の調整
    - コネクション使いまわすなど
    - CDN

## Chapter9

- OSの話(Linux)
- カーネルパラメータ