パフォーマンスを理解するためには、内部のアーキテクチャーを理解する必要がある
ブラックボックス化が進んでも、パフォーマンスだけは、エンジニアが仕組みを理解して、チューニングすべきである
アルゴリズムの理解:アルゴリズム良し悪しがパフォーマンスを決定する
計算量でアルゴリズムを評価する
レスポンス
...続きを読むとスループットは違う。レスポンスは応答時間、スループットは仕事量
主要なアルゴリズム
配列とループ処理
リストとループ処理
探索木
ハッシュ
キュー
スタック
ソート
キャッシュ
ロック
パフォーマンスの改善は、まず測定することから
パフォーマンス情報は3種
合計(サマリ形式)
ログ(イベント記録方式)
スナップショット(瞬間の状況把握)
トラブルの最初の切り分けは、どこで問題が起きているか
キュートスレッド
平均待ち時間 ランダム呼 M/M/1
OS Linux sar,vmstat,ps,netstat,iostat,top,wireshark,tcpdump,pstack
Windows タスクマネジャー、パフォーマンスモニター、リソースマネジャー
アプリ Webサーバ、APサーバ、DBサーバ、ストレージ、ネットワーク
チューニングは、アルゴリズム、アーキテクチャーを理解して分析ができれば、定石のテクニックを使う
無駄をできるだけなくす
インデックス
まとめて処理する
再処理する
高速化と並列化
スケールアップ(CPU追加、クロックアップ)と、スケールアウト(別サーバを追加)
局所性
・ループの省略、キャッチボールの削減
・参照頻度が高いデータは、キーバリューストア化、ハッシュ化
・同期を非同期に
・帯域制御
・負荷分散、ラウンドロビン 等
パフォーマンステスト
・時間内におわらない
・パフォーマンスがでない
・本番環境では問題が発生
・負荷シナリオに不備
・バッファ・キャッシュの利用を想定しなかった
・シンクタイム
パフォーマンステストの種類
・限界テスト(最低パフォーマンス、最大パフォーマンス)
・縮退運転
・基盤パフォーマンス
・アプリ単体パフォーマンス
・耐久テスト
工程管理とパフォーマンス
要件定義 スループット、レスポンスタイム、ユーザ多重度
基本設計 システム選定、パフォーマンステスト環境、パフォーマンス設計
パフォーマンステスト設計 テストスケジュール、人員手配、連絡体制
基盤結合テスト 基盤パフォーマンステスト
結合テスト 多重実行テスト
総合テスト 負荷テスト、限界テスト、耐久テスト
運用テスト パフォーマンス監視テスト、障害テスト
CONTENTS
はじめに
【第1章】パフォーマンスの基礎的な考え方
1.1 パフォーマンスを学ぶために必要なこと
1.2 アルゴリズムのメリット/デメリットと学習法
1.3 アルゴリズムの実例とパフォーマンスの違い
1.4 レスポンスとスループットの違い
1.5 アルゴリズムの具体例
【第2章】パフォーマンス分析の基本
2.1 パフォーマンスの第一歩は測定から
2.2 必要なパフォーマンス情報とは
2.3 パフォーマンス分析で重要な理論
2.4 OSのコマンド
【第3章】実システムのパフォーマンス分析
3.1 Web/APサーバとJava/Cアプリ
3.2 DBサーバのパフォーマンス測定
3.3 ストレージのパフォーマンス分析の考え方
3.4 ネットワークのパフォーマンス分析の考え方
3.5 原因調査
【第4章】パフォーマンスチューニング
4.1 パフォーマンスとチューニング
4.2 パフォーマンスチューニングの定石
4.3 現場で用いられるテクニック
4.4 実際の業務で遭遇するパフォーマンス
4.5 チューニングの例
【第5章】パフォーマンステスト
5.1 パフォーマンステストの概要
5.2 よくある失敗:9つのアンチパターン
5.3 パフォーマンステストの種類
5.4 プロジェクト工程で考えるパフォーマンステスト
5.5 パフォーマンステストの課題と必要ノウハウ
【第6章】仮想化環境におけるパフォーマンス
6.1 仮想化とパフォーマンス
6.2 仮想化概要
6.3 サーバ仮想化の主な技術(オーバコミット)
6.4 仮想化環境のパフォーマンスの考え方と分析方法
【第7章】クラウド環境におけるパフォーマンス
7.1 クラウド環境におけるパフォーマンスの考え方
7.2 クラウドとオンプレミスの違い
7.3 クラウド環境の内部構造と最適なアプリケーション方式
7.4 クラウド環境におけるパフォーマンス分析の仕方
7.5 クラウド環境での開発フェーズのアプローチ
7.6 クラウド環境での運用フェーズのアプローチ
参考文献
索引
ISBN:9784798134604
出版社:翔泳社
判型:A5
ページ数:336ページ
定価:2580円(本体)
発売日:2014年06月20日初版第1刷