《圖解性能優化》
內容介紹
本書由有著豐富的系統開發和運維經驗的Oracle高 級顧問執筆,詳細解說了系統性能的相關知識,從性能的概念講起,由淺入深,全面介紹了性能分析的基礎知識、實際系統的性能分析、性能調優、性能測驗、虛擬化環境下的性能分析、云計算環境下的性能分析等內容,書中列舉了豐富的實體,并結合直觀的插圖,向讀者傳授了有用的實戰技巧,另外,因為系統性能和系統架構密切相關,所以讀者在學習系統性能的程序中還能有效地學到系統架構的相關知識,
書本目錄
第 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
總結
機會只垂青有準備的人,這是一個靠本事的社會,有時候,你之所以發展得不好,不是因為沒有機遇,而是因為你沒有準備好,導致機遇與你擦肩而過,如果你想要學習,什么時候開始都不晚,而不是瞻前顧后,你只要用盡全力,剩下的就交給時間!
《圖解性能優化》,你們的轉發點贊是小編創作的動力,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/298856.html
標籤:其他
下一篇:1、數字電路概念
