No.
2023-09-16
  • Jan
  • Feb
  • Mar
  • Apr
  • May
  • Jun
  • Jul
  • Aug
  • Sep
  • Oct
  • Nov
  • Dec
  • Sun
  • Mon
  • Tue
  • Wed
  • Thu
  • Fri
  • Sat
  • 27
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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とは何か