圖解性能優化

圖解性能優化

作者: 小田圭二 榑松谷仁 平山毅 岡田憲昌
出版社: 人民郵電
出版在: 2017-01-01
ISBN-13: 9787115442420
ISBN-10: 7115442428
裝訂格式: 平裝
總頁數: 295 頁





內容描述


從基礎知識到全新技術,從系統開發到運維,195張圖解講透性能!
1.專業團隊撰寫,開發、測試、運維工程師值得擁有!
本書由實戰經驗豐富的Oracle高級顧問執筆,全面地介紹了系統性能的方方面面,涉及服務器、CPU、內存、存儲、網絡,等等。
2.理論結合實際,滿載實用技巧!
書中列舉了豐富的實例以及在實際開發過程中會出現的各種場景,向讀者傳授了有用的實戰技巧。
3.圖文直觀,由淺入深,講解細緻!
結合直觀的插圖,從算法等基礎知識講起,到虛擬化和雲計算等環境下的性能優化,由淺入深,便於理解。


目錄大綱


第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.690百分位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


作者介紹


小田圭二(作者)
日本Oracle株式會社諮詢部門經理。在解決性能問題方面有著豐富的經驗,著有《圖解OS、存儲、網絡:DB的內部機制》(絵で見てわかるOS/ストレージ/ネットワーク~データベースはこう使っている)、《圖解Oracle的機制》(絵で見てわかるOracleの仕組み)等多部著作。
榑松谷仁(作者)
日本Oracle株式會社顧問。曾在Emprix公司(美國本部)就職,為SIer和一般企業提供壓力測試、性能管理等方面的諮詢服務。之後就職於日本Oracle株式會社,還負責為使用Java、WebLogic、Exalogic等中間件產品的客戶提供諮詢服務。
平山毅(作者)
在東京理科大學理工學部上學期間成為Sun Site用戶,專業是計算機科學和統計學。曾在日本某大型互聯網公司就職,目前在世界上第1大的雲計算供應商做架構師和諮詢顧問,負責了多個大規模的國際性案件。喜歡的技術是Oracle、VCE、AWS。
岡田憲昌(作者)
曾在某IT公司做基礎設施的設計、搭建和運維工作,後就職於日本Oracle株式會社,負責Oracle產品的設計和PM支持、DBA支持等。目前在某大型虛擬化軟件供應商做諮詢顧問和研發技術經理,負責為虛擬化基礎設施和雲計算的設計、運維等提供諮詢服務。




相關書籍

Linux 設備驅動開發 (Linux Device Driver Development)

作者 John Madieu 袁鵬飛 劉壽永譯

2017-01-01

5G時代的AI技術應用詳解

作者 亞信科技(中國)有限公司

2017-01-01

Internetworking with TCP/IP Volume One, 6/e (Hardcover)(美國原版)

作者 Douglas E. Comer

2017-01-01