ISUCON本
Scan
Ch1.チューニング
- SEO
- 速さの単位
- 速さとキャパシティ
- 推測せず計測する
- 公平に比較
- 1つずつ比較
- ボトルネック
- 負荷試験
Ch2. モニタリング
- 外形監視
- 内部監視
- node_exporter
- グラフの比較
- 高負荷状態のモニタリング
- 解像度
- ログに対するモニタリング
Ch3. Ch4. 負荷試験
- private-isu
    - 負荷試験環境
 
- nginx
    - アクセスログ
- JSON形式のログ
- alp
 
- ベンチマーカー
    - abコマンド
- abとalpの結果の比較
 
- 負荷試験中の負荷
- MySQLのボトルネック
    - スロークエリログ
 
- 並列度
    - CPUを使い切る
 
- シナリオ
    - 負荷試験ツールk6
- Webサービスの初期化処理シナリオ
- アクセスログ解析
- 統合シナリオ
 
Ch5. データベース
- DBの種類と選択
    - RDBMS
- NoSQL
- NewSQL
 
- DBの負荷計測
    - OSから負荷を観察
- プロセスリスト
- pt-query-digestでスロークエリログの分析
- query-digesterでプロファイリングの自動化
 
- インデックス
    - 複合インデックス
- クラスターインデックス
 
- N+1
- データベースとリソースの効率的な利用
    - FORCE INDEX
- STRAIGHT_JOIN
- 必要なカラムだけ取得
- プリペアドステートメント
- 接続の永続化と最大接続数
 
Ch6. リバースプロキシ
- アプリケーション
- プロセス・スレッド
- nginx
    - アーキテクチャ
- 転送時のデータ圧縮
- リクエスト・レスポンスのバッファリング
- アップストリームサーバーとのコネクション管理
- TLS通信の高速化
 
Ch7. キャッシュ
- ミドルウェア
- KVS(Key-Value-Store)
- いつ利用するか
- TTLの設定
- 具体的な実装方法
    - 生成結果を保存
- 非同期処理
- バッチ処理
 
- キャッシュの監視
Ch8. 高速化手法
- ライブラリ
- 冗長なログ
- HTTPクライアントの使い方
    - 同一ホストへのコネクションの使い回し
- 適切なタイムアウト
- 対象ホストへのコネクション数の制限
 
- 静的ファイル配信
- HTTPヘッダを利用したキャッシュ
- CDN
Ch9. OS(Linux)
- 流れを見極める
- Linux Kernel
- プロセス管理
- ネットワーク
    - メトリクス
- パケット処理の効率化
 
- ディスクI/O
    - ストレージの種類
- ストレージの性能
        - スループット
- レイテンシ
- IOPS
 
- ストレージの性質
- ディスクマウントのオプション
- I/Oスケジューラ
 
- CPU使用率
    - us
- sy
- ni
- id
- wa
- hi
- si
- st
 
- 効率的なシステム設定
    - ulimit
 
- Linuxカーネルパラメータ
    - net.core.somaxconn
- net.ipv4.ip_local_port_range
 
- MTU(Maiximum Transmission Unit)
Question
全体
- Webサービスの高速化とは何か、何のためにあるのか
- Webサービスの高速化のために何をすればいいのか
- ISUCONで勝つためにやるべきことは何か
Ch1.
- チューニングとは何か
- チューニングはどのようにするのか
- ボトルネックとは
Ch2.
- モニタリングとは何か
- モニタリングはどのようにするのか
- node_exporterとは
- 外形監視と内部監視の違いは
Ch3. Ch4.
- 負荷試験とは何か
- 負荷試験はどのようにするのか
- 負荷試験のためのツールは何があるのか
- nginxのアクセスログで何がわかるのか
- alpとは何か
- abコマンドとは何か
- スロークエリログとは何か
- シナリオとは何か
- k6とは何か
- シナリオを設定した負荷試験は通常の負荷試験と何が違うのか
Ch5.
- データベースをどのように改善して高速化するのか
- NewSQLとは何か
- DBの負荷計測はどのようにするのか
- インデックスとは何か
- プリペアドステートメントとは何か
- 接続の永続化とは何か
Ch6.
- リバースプロキシとは何か
- リバースプロキシはどのように実装するのか
- リバースプロキシをどのように使って高速化するのか
- nginxのアーキテクチャはどのようになっているのか
- 次を実現するためにはどうするのか
    - 転送時のデータ圧縮
- リクエスト・レスポンスのバッファリング
- アップストリームサーバーとのコネクション管理
- TLS通信の高速化
 
Ch7.
- キャッシュとは何か
- キャッシュはどのように実装するのか
- キャッシュをどのように使って高速化するのか
- KVSとは何か
Ch8.
- 高速化手法には何があるのか
- HTTPクライアントとは何か
Ch9.
- OSレベルでの高速化ではどのようなことをするのか
- 「流れ」とは何か
- Linuxカーネルとは何か
- プロセス管理とは何か
- メトリクスとは何か
- システム設定とは何か
- カーネルパラメータとは何か
- MTUとは何か