書籍概要

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

著者
発売日
更新日

概要

LINE株式会社が主催するWebサービスのパフォーマンスチューニングコンテスト,ISUCON(Iikanjini Speed Up Contest)で技術を競い合ってきた著者がWebサービス高速化のための考え方とノウハウをわかりやすく解説。

本書では,お題となるWebサービスをひとつ用意して,手を動かしながら高速化手法を学んでいきます。Webサービスがどのくらいの負荷に耐えられるか,どのくらいの負荷で不具合が起こるかを検証し,不具合が起こる原因を突き止め,改善していきます。また,負荷に対応する方法だけでなく,負荷を発生させる方法(ベンチマーカーの作成方法)も紹介します。

本書を読んで,Webサービス高速化について理解を深め,性能を向上させましょう。

こんな方におすすめ

  • Webサービス・アプリケーションの動作が重くて困っている方
  • ISUCONに出場してみたい方
  • ISUCONに出場したことはあるが,良い成績を収められなかった方

サンプル

目次

Chapter1 チューニングの基礎知識

  • 1-1 “高速であること”は現代のWebサービスの必須要件
  • 1-2 高速なWebサービスとは
  • 1-3 Webサービスの負荷
  • 1-4 必要十分なキャパシティを用意するには
  • 1-5 パフォーマンスチューニング“きほんのき”
  • 1-6 パフォーマンスチューニング“きほんのほ”
  • 1-7 パフォーマンスチューニング“きほんのん”
  • 1-8 まとめ

Chapter2 モニタリング

  • 2-1 モニタリングとは - インフラにおけるテスト
  • 2-2 モニタリングに対する考え方
  • 2-3 モニタリングの種類
  • 2-4 手動でのモニタリング
  • 2-5 モニタリングツール
  • 2-6 モニタリングツールのアーキテクチャ
  • 2-7 実際にモニタリングを行う
  • 2-8 モニタリングの注意点
  • 2-9 ログに対するモニタリング
  • 2-10 まとめ

Chapter3 基礎的な負荷試験

  • 3-1 本書で扱うWebサービス private-isu
  • 3-2 負荷試験の準備
  • 3-3 ベンチマーカーによる負荷試験の実行
  • 3-4 パフォーマンスチューニング 最初の一歩
  • 3-5 ベンチマーカーの並列度
  • 3-6 まとめ

Chapter4 シナリオを持った負荷試験

  • 4-1 負荷試験ツール k6
  • 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 まとめ

Chapter6 リバースプロキシの利用

  • 6-1 アプリケーションとプロセス・スレッド
  • 6-2 リバースプロキシを利用するメリット
  • 6-3 nginxとは
  • 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-5 キャッシュを監視する
  • 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-2 Linux Kernelの基礎知識
  • 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 まとめ

サポート

ダウンロード

(2022年5月25日最終更新)

本書のサンプルコードは,以下からご利用いただけます。

https://github.com/tatsujin-web-performance/tatsujin-web-performance

免責:本サンプルを使用することによって,使用者が受けたあらゆる不利益に対して,原著者および技術評論社はその責任を負いません。

正誤表

正誤表は,次のページで公開しています。ここに訂正するとともに,ご迷惑をおかけしましたことを深くお詫び申し上げます。

(2022年8月3日最終更新)

https://github.com/tatsujin-web-performance/tatsujin-web-performance/blob/main/errata.md

商品一覧