編輯推薦
從基礎知識到全新技術,從係統開發到運維,195張圖解講透性能!
1.專業團隊撰寫,開發、測試、運維工程師值得擁有!
本書由實戰經驗豐富的Oracle高級顧問執筆,全麵地介紹瞭係統性能的方方麵麵,涉及服務器、CPU、內存、存儲、網絡,等等。
2.理論結閤實際,滿載實用技巧!
書中列舉瞭豐富的實例以及在實際開發過程中會齣現的各種場景,嚮讀者傳授瞭有用的實戰技巧。
3.圖文直觀,由淺入深,講解細緻!
結閤直觀的插圖,從算法等基礎知識講起,到虛擬化和雲計算等環境下的性能優化,由淺入深,便於理解。
內容簡介
《圖解性能優化》由有著豐富的係統開發和運維經驗的Oracle高級顧問執筆,詳細解說瞭係統性能的相關知識。從性能的概念講起,由淺入深,全麵介紹瞭性能分析的基礎知識、實際係統的性能分析、性能調優、性能測試、虛擬化環境下的性能分析、雲計算環境下的性能分析等內容。書中列舉瞭豐富的實例,並結閤直觀的插圖,嚮讀者傳授瞭有用的實戰技巧。另外,因為係統性能和係統架構密切相關,所以讀者在學習係統性能的過程中還能有效地學到係統架構的相關知識。
作者簡介
小田圭二(作者)
日本Oracle株式會社谘詢部門經理。在解決性能問題方麵有著豐富的經驗,著有《圖解OS、存儲、網絡:DB的內部機製》(絵で見てわかるOS/ストレージ/ネットワーク~データベースはこう使っている)、《圖解Oracle的機製》(絵で見てわかるOracleの仕組み)等多部著作。
榑鬆榖仁(作者)
日本Oracle株式會社高級首席顧問。曾在Emprix公司(美國本部)就職,為SIer和一般企業提供壓力測試、性能管理等方麵的谘詢服務。之後就職於日本Oracle株式會社,還負責為使用Java、WebLogic、Exalogic等中間件産品的客戶提供谘詢服務。
平山毅(作者)
在東京理科大學理工學部上學期間成為Sun Site用戶,專業是計算機科學和統計學。曾在日本某大型互聯網公司就職,目前在世界上第1大的雲計算供應商做架構師和谘詢顧問,負責瞭多個大規模的國際性案件。喜歡的技術是Oracle、VCE、AWS。
岡田憲昌(作者)
曾在某IT公司做基礎設施的設計、搭建和運維工作,後就職於日本Oracle株式會社,負責Oracle産品的設計和PM支持、DBA支持等。目前在某大型虛擬化軟件供應商做谘詢顧問和研發技術經理,負責為虛擬化基礎設施和雲計算的設計、運維等提供谘詢服務。
目錄
第1章 性能的基礎知識 1
1.1 學習性能所必需的知識……2
1.2 算法的優缺點與學習方法……4
1.2.1 什麼是算法……4
1.2.2 算法的基礎……5
1.2.3 學習算法的竅門……7
1.3 算法的應用實例及性能的差異……8
1.3.1 日常生活中算法的例子……8
1.3.2 對性能的影響程度……9
1.3.3 評價算法的指標……11
學習信息科學的重要性……13
1.4 響應與吞吐的區彆……14
係統工程師學習編程的重要性……16
1.5 算法的具體例子……16
1.5.1 數組與循環處理……16
1.5.2 鏈錶與循環處理……19
1.5.3 樹與查找……21
1.5.4 散列算法……25
1.5.5 隊列……28
1.5.6 棧……32
1.5.7 排序(快速排序)……34
1.5.8 緩存①(迴寫)……36
1.5.9 緩存②(直寫)……38
DMBS是數據結構與算法的寶庫……38
1.5.10 鎖與性能……40
【高級篇】鎖的機製是如何實現的……42
【高級篇】性能優劣不能隻看正常情況……44
第2章 性能分析的基礎 45
2.1 性能分析從測量開始……46
2.2 什麼是必要的性能信息……46
2.2.1 “分段查找”原則……46
2.2.2 性能信息的3種類型……48
2.2.3 係統的模型與性能故障時的運作情況……50
2.2.4 數據的種類及分析的竅門……53
2.3 性能分析中的重要理論……54
2.3.1 等待隊列理論的術語……55
2.3.2 計算等待隊列的平均等待時間……56
2.3.3 使用率和等待隊列的例子……57
2.3.4 實際上可以獲取哪些信息……59
需要定期確認性能嗎?……61
2.4 OS的命令……61
2.4.1 sar……62
2.4.2 vmstat……64
時間同步非常重要……66
2.4.3 ps……66
2.4.4 netstat……68
2.4.5 iostat……70
2.4.6 top……73
2.4.7 數據包轉儲(wireshark、tcpdump等)……74
2.4.8 pstack……76
2.4.9 係統調用(strace等)……78
2.4.10 Profiler……80
2.4.11 Windows環境……81
第3章 實際係統的性能分析 85
3.1 Web/AP服務器與Java/C應用程序……86
3.1.1 Web服務器的訪問日誌……86
3.1.2 應用程序、AP服務器的日誌……87
3.2 DB服務器的性能測量……90
3.2.1 DBMS的性能測量的原理……90
3.2.2 性能分析告一段落……92
批處理的性能測量……93
3.3 存儲性能分析的思路……94
3.3.1 存儲的相關術語……94
3.3.2 存儲性能分析的思路:重視IOPS……96
3.4 網絡性能分析的思路……100
性能故障數據應該保存多久?……102
3.5 調查原因……102
3.5.1 初學者容易掉入的陷阱……103
3.5.2 應有的態度……106
獲取各種性能信息的時間要吻閤嗎?……108
3.5.3 實際的調查流程……108
性能分析的理想工具……111
第4章 性能調優 113
4.1 性能與調優……114
4.1.1 現實中的性能……114
4.1.2 在現場要保持“大局觀”……117
4.2 性能調優的準則……118
4.2.1 設定既不能太粗也不能太細,要剛剛好……119
4.2.2 調優要循序漸進……120
4.2.3 通過重復使用來提速……121
4.2.4 匯總處理(集中、Piggyback)……121
4.2.5 提高速度與實現並行……123
4.2.6 縱嚮擴展與橫嚮擴展……124
4.2.7 局部性……124
編譯器會與RDBMS走上同一條道路嗎?……125
4.3 現場可以使用的技巧……126
4.3.1 省略循環,減少投接球……126
4.3.2 訪問頻率高的數據存放入鍵值存儲或散列錶中……127
4.3.3 訪問頻率高的數據放在使用位置附近……127
4.3.4 把同步變成異步……128
4.3.5 帶寬控製……130
4.3.6 LRU算法……131
4.3.7 分割處理或者細化鎖的粒度……131
4.3.8 使用不丟失的迴寫緩存……132
4.3.9 使用多層緩存……132
4.3.10 使用巨幀和高速網絡……132
4.3.11 負載均衡、輪詢……133
4.3.12 關聯性、綁定、粘滯會話……134
4.3.13 寫時復製……135
4.3.14 日誌……136
4.3.15 壓縮……137
4.3.16 樂觀鎖……137
4.3.17 列式數據庫……138
4.3.18 服務器的性能設置中,初始值=最大值?……139
4.4 實際業務中碰到的性能問題……139
4.4.1 性能比較的參考數據……139
4.4.2 緩存命中率並不一定要高……140
4.4.3 存儲的調優方針……141
4.4.4 雖然容量足夠,但還是添加磁盤……141
4.4.5 從性能角度看文件分割……142
4.4.6 90百分位……143
4.4.7 讀取與寫入的比例……143
4.5 調優的例子……144
4.5.1 例1:2層循環中select語句的執行……144
4.5.2 例2:偶爾齣現性能下降……147
等待隊列的前麵發生瞭什麼?……149
第5章 性能測試 151
5.1 性能測試的概要……152
5.1.1 項目工程中的性能測試……152
5.1.2 不同職責的性能測試相關人員……153
5.2 常見的失敗情況:9種反麵模式……156
5.2.1 不能在期限內完成……156
5.2.2 性能很差!解決不瞭性能問題……157
5.2.3 由於沒有考慮到環境差異而導緻發生問題……158
5.2.4 壓力場景設計不完備導緻發生問題……159
5.2.5 沒有考慮到緩衝、緩存的使用而導緻發生問題……159
5.2.6 沒有考慮到思考時間而導緻發生問題……160
5.2.7 報告內容難以理解導緻客戶不能認同……162
5.2.8 客戶因為存在不信任感而不能認同……163
5.2.9 測試很花時間……164
5.3 性能測試的種類……167
5.3.1 實施的周期……168
5.3.2 狹義的性能測試……169
5.3.3 臨界測試(臨界性能、迴退性能、故障測試)……169
5.3.4 基礎設施性能測試……174
5.3.5 應用程序單元性能測試……178
5.3.6 耐久測試……179
5.3.7 關聯領域……180
5.4 項目工程中考慮的性能測試……181
5.4.1 需求定義……181
5.4.2 項目規劃……186
5.4.3 【基本設計】選擇係統……187
5.4.4 【基本設計】性能測試環境……188
5.4.5 【基本設計】其他與性能設計相關的事項……191
5.4.6 【性能測試設計】測試計劃的細節……192
5.4.7 【性能測試設計】人員配備與聯絡體製……194
5.4.8 【基礎設施集成測試】基礎設施性能測試……195
5.4.9 【集成測試】多並發運行測試……197
5.4.10 【係統測試】壓力測試、臨界測試、耐久測試……197
5.4.11 【運維測試】性能監控測試、故障測試……198
5.4.12 【交付】性能測試結果的驗收報告……198
5.4.13 【運維】初期運行確認……199
5.5 性能測試的課題與必要的技巧……200
5.5.1 性能預估能力……200
5.5.2 高效的反復實施能力……202
5.5.3 Oracle Application Testing Suite的使用效果……203
第6章 虛擬化環境下的性能 209
6.1 虛擬化與性能……210
6.2 虛擬化的概要……211
6.2.1 什麼是服務器虛擬化……211
6.2.2 虛擬化的種類……212
硬件輔助虛擬化……214
6.3 服務器虛擬化的主要技術(過載使用)……215
6.3.1 CPU的虛擬化技術……215
6.3.2 內存的虛擬化技術……218
6.4 虛擬化環境下性能的相關知識與分析方法……225
6.4.1 性能分析的工具……225
6.4.2 CPU的性能管理……226
6.4.3 內存的性能管理……231
6.4.4 存儲的性能管理……234
還沒使用DRS嗎?……237
6.4.5 網絡的性能管理……240
延遲靈敏度功能……243
第7章 雲計算環境下的性能 245
7.1 雲計算環境下性能的相關知識……246
7.1.1 雲計算環境下性能會變差嗎……246
7.2 雲計算與本地部署的差異……247
7.2.1 雲計算的定義……248
7.2.2 從雲計算的特點來看與本地部署環境的不同……248
雲計算實現的終極全球化……251
7.2.3 雲計算的實現形態……251
混閤結構的成本管理就是使用實物期權實現的投資組閤管理……252
7.2.4 從雲計算的服務模式來看其與本地部署的差彆……253
雲計算環境中可以把盈虧平衡點圖形化(獨自SaaS提供的最優費用模型)……254
7.2.5 把握資源的變動因素與固定因素……254
7.3 雲計算環境的內部結構與最佳應用程序架構……262
7.3.1 集中式?分布式?……262
7.3.2 緊耦閤?鬆耦閤?……264
7.3.3 SOAP?REST?……265
能夠把握抽象化的雲計算環境的美國人——圖與想象的重要性……268
7.3.4 前端的分布式處理:網絡的訪問方法……269
7.3.5 後端的分布式處理:數據存儲的知識(從ACID到BASE)……271
7.3.6 提高TCP通信的速度……272
7.3.7 提高對象存儲的速度……272
7.3.8 C語言?Java語言?還是腳本語言?……273
7.3.9 雲計算環境下高性能服務的架構……274
7.3.10 開放遷移與雲計算遷移……277
7.3.11 推測雲計算的內部結構……278
7.4 雲計算環境下性能分析的方法……278
7.4.1 獲得雲計算環境的基準數據的價值與不斷進化的性能值……278
性能領域是理科工程師的特權?……280
7.4.2 Web係統的基本分析方法……281
7.4.3 批處理係統的基本分析方法……282
7.4.4 雲計算的自動擴展功能……283
7.4.5 解析雲計算環境中的復雜信息的統計方法……284
7.5 雲計算環境中開發階段的思維方式……285
7.5.1 估算(基本設計)……286
7.5.2 性能測試(係統測試)……287
7.5.3 項目管理……287
雲計算環境下,經營者也需要關注詳細的性能數據嗎?……288
7.6 雲計算環境中運維階段的思維方式……289
7.6.1 容量管理……289
閾值設置與係統安全係數、標準化的價值……290
7.6.2 故障發生時的降規模容量運維……292
7.6.3 生命周期與更新……293
雲計算實現的DevOps中性能調優的高效化……294
參考文獻……296
作者簡介……297
圖解性能優化 下載 mobi epub pdf txt 電子書