達人が教えるWebパフォーマンスチューニング
https://gyazo.com/210b882fde24810774d1612280aacc41
2022年6月4日
@takehora: 「達人が教えるWebパフォーマンスチューニング ~ISUCONから学ぶ高速化の実践」について読み始めて、色々突っ込みどころというか、間違いが満載なので、Qiitaにまとめでも書こうかと下書きで書いているのですが、あまりに多すぎて、自分の時間の優先順位を思い出して書くのを止めようかと… パフォーマンスチューニングと負荷対策がごっちゃだ…
二つは別です。
性能対策 … パフォーマンスチューニング
負荷対策 … スケールアウト戦略
性懲りもなくSynthetic Monitoringを外形監視って書いている。もうどうしようもないな。
Syntheticの意味が分かってない。
M/M/1は出てこなかった。
ポアソン分布/指数分布も出てこなかった…
...ベンダーの都合に合わせて書いてる技術情報を参照してはいけないです。
ベンダーは自社で実装されたものについて、正しい情報を出すけど、それが効果があるかどうかは、話が別です。
...検証して確認しないと…
パフォーマンスチューニングの基礎理論の本は洋書で何冊も出てる。
統計的品質管理、ポアソン分布、M/M/1キューイング理論、実験計画法…
APMを停止するだけで、コンテキストスイッチ、25〜30%削減できて、高速化するんよ。 同時並行処理性能という謎な用語の説明に、
・並行処理(Concurrency)
・並列処理(Parallelism)
が混ざってます。
レスポンス受信完了までの時間はレスポンスタイムと云います。
pingに代表されるように、RTTは、Acknowledgementが返ってくるまでの時間です。 perfは、パフォーマンスチューニングで必須なんだけど、記載がない。eBPFは紹介だけ。 ...私はファーストフード方式とレストラン方式って呼んでるけど、ファーストフードみたいに、次から次へとリクエストを捌く場合の試験結果と、レストランみたいに待機時間を挟んだリクエストの試験結果って違うわけで、アメリカの商用負荷試験ツールはそこがきちんと分かれてる。
目次
Chapter1 チューニングの基礎知識
1-1 “高速であること”は現代のWebサービスの必須要件
1-2 高速なWebサービスとは
1-3 Webサービスの負荷
1-4 必要十分なキャパシティを用意するには
1-6 パフォーマンスチューニング“きほんのほ”
1-7 パフォーマンスチューニング“きほんのん”
1-8 まとめ
2-1 モニタリングとは - インフラにおけるテスト
2-2 モニタリングに対する考え方
2-3 モニタリングの種類
2-4 手動でのモニタリング
2-5 モニタリングツール
2-6 モニタリングツールのアーキテクチャ
2-7 実際にモニタリングを行う
2-8 モニタリングの注意点
2-9 ログに対するモニタリング
2-10 まとめ
3-1 本書で扱うWebサービス private-isu
3-2 負荷試験の準備
3-3 ベンチマーカーによる負荷試験の実行
3-4 パフォーマンスチューニング 最初の一歩
3-5 ベンチマーカーの並列度
3-6 まとめ
Chapter4 シナリオを持った負荷試験
4-2 k6による単純な負荷試験
4-3 k6でシナリオを記述する
4-4 複数のシナリオを組み合わせた統合シナリオを実行する
4-5 負荷試験で得られたアクセスログを解析する
4-6 まとめ
Chapter5 データベースのチューニング
5-1 データベースの種類と選択
5-2 データベースの負荷を測る
5-3 インデックスでデータベースを速くする
5-4 N+1とは
5-5 データベースとリソースを効率的に利用する
5-6 まとめ
6-1 アプリケーションとプロセス・スレッド
6-2 リバースプロキシを利用するメリット
6-4 nginxのアーキテクチャ
6-5 nginxによる転送時のデータ圧縮
6-6 nginxによるリクエスト・レスポンスのバッファリング
6-7 nginxとアップストリームサーバーのコネクション管理
6-8 nginxのTLS通信を高速にする
6-9 まとめ
Chapter7 キャッシュの活用
7-1 キャッシュデータ保存に利用されるミドルウェア
7-2 キャッシュをKVSに保存する際の注意点
7-3 いつキャッシュを利用するか
7-4 具体的なキャッシュ実装方法
7-6 まとめ
Chapter8 押さえておきたい高速化手法
8-1 外部コマンド実行ではなく,ライブラリを利用する
8-2 開発用の設定で冗長なログを出力しない
8-3 HTTPクライアントの使い方
8-4 静的ファイル配信をリバースプロキシから直接配信する
8-5 HTTPヘッダーを活用してクライアント側にキャッシュさせる
8-6 CDN上にHTTPレスポンスをキャッシュする 8-7 まとめ
Chapter9 OSの基礎知識とチューニング
9-1 流れを見極める
9-3 Linuxのプロセス管理
9-4 Linuxのネットワーク
9-5 LinuxのディスクI/O
9-6 CPU利用率
9-7 Linuxにおける効率的なシステム設定
9-8 Linuxカーネルパラメータ
9-9 MTU(Maximum Transmission Unit) 9-10 まとめ
付録
A private-isuの攻略実践
A-1 用意した競技用環境
A-2 ベンチマーカーの実行方法
A-3 各章の技法を適用する
A-4 まとめ
B ベンチマーカーの実装
B-1 ISUCONのベンチマーカーは何をするのか
B-2 ベンチマーカーに頻出する実装パターン
B-3 private-isuを対象としたベンチマーカーの実装
B-4 まとめ