深入性能測試——LoadRunner性能測試、流程、監控、調優全程實戰

-
【作 者】黃文高 編著
【I S B N 】978-7-5226-0969-0
【責任編輯】王開云
【適用讀者群】科技
【出版時間】2022-10-26
【開 本】16開
【裝幀信息】平裝(光膜)
【版 次】第2版第1次印刷
【頁 數】512
【千字數】751
【印 張】32
【定 價】¥118
【叢 書】暫無分類
【備注信息】
簡介
本書特色
前言
章節列表
精彩閱讀
下載資源
相關圖書
本書主要深入系統地講解性能測試及性能調優相關技術。全書緊緊圍繞企業現階段性能測試的核心內容進行編排,囊括了性能測試的三大核心內容,即性能測試過程、腳本開發、服務器監控與調優。其中,性能測試過程的內容主要包括性能測試流程、性能工作負載建模和生產環境下的性能測試;腳本開發的內容包括特殊協議的腳本開發、接口性能的腳本開發以及全鏈路性能測試的腳本開發;服務器監控與調優的內容主要包括操作系統資源的監控與調優、Apache服務器監控與調優、Tomcat服務器監控與調優、Nginx服務器監控與調優、MS SQL服務器監控與調優、MySQL服務器監控與調優、Redis服務器監控與調優和前端性能優化的23大規則。
本書適用于測試工程師或已經在做性能測試的朋友,為了讓一些想進入性能測試領域工作但缺少性能測試相關基礎知識的朋友也能使用本書,作者免費提供了《性能測試基礎—LoadRunner完全講義》電子書,可通過掃描本書前言后面的二維碼獲取,通過二維碼還可獲取本書所有的相關代碼等學習資源。希望本書能帶領大家暢游性能測試的精彩世界。
飽含作者超10年的軟件測試及授課經驗
理論與實操并重,知識點與案例無縫銜接
詳細講解性能測試全流程技術
主流操作系統、Web應用、數據庫、存儲等服務器以及前端的性能監控、調優一站掌握
作者贈送LoadRunner電子書、相關課程視頻
本書是《深入性能測試—LoadRunner性能測試、流程、監控、調優全程實戰剖析》的升級版,筆者用了整整兩年的時間完成了本書的創作,相比本書第一版,現在的內容可以說已經是脫胎換骨。新增了很多當前企業開發中流行的、急需的性能測試及調優的技術內容,當前,這些相關內容系統性學習資料極少。
筆者從事軟件測試16年,從事性能測試13年,見證了國內軟件測試從起步到成熟的整個過程。10年前國內很多公司沒有軟件測試團隊,而今天一般的研發公司都有成型的軟件測試團隊。從10年前的手工測試,到今天不斷完成接口測試、自動化測試、性能測試。
性能測試在近10年時間取得了長足的發展,特別是在移動互聯不斷發展的情況下,站點訪問的用戶越來越多,對系統的性能要求越來越高。10年前性能測試的招聘崗位很少,那時候對性能測試的要求很低,只要掌握性能測試工具的使用即可找到一份不錯的工作。后來,企業要求性能測試工程師能夠監控服務器的一些指標,不包括對全棧指標進行監控,但現在性能測試的高度和要求已經大幅度提高,從簡單的腳本開發到全鏈腳本開發,從簡單的場景監控到混合場景百分比模型監控,從單點服務器監控到全鏈路場景,從只要監控數據到分析和調優等。
這也是筆者為何對此書的升級付出大量精力的原因,花了整整兩年時間升級這本書,就是希望能夠將性能測試過程中需要監控和分析的所有對象都覆蓋到,這樣可以更好地幫助讀者解決性能測試過程中遇到的問題,也可以更好地幫助讀者完善性能測試技術體系。
本次升級主要是更新性能調優部分的內容,這些升級的內容可以覆蓋企業性能測試常見的測試要求,包括:
(1)腳本開發。本書在腳本開發部分做了重點升級,主要是升級了接口性能測試腳本開發和全鏈路腳本開發,以前企業要求的性能測試只需要會簡單的腳本開發,但現在性能測試為了更好地模擬業務場景,都要求開發全鏈路腳本,將每個場景做成一個全鏈路,這樣就可以更完美地模擬真實的業務場景。
(2)全鏈路中每個節點的監控。本書在調優方面主要升級的內容包括前端優化,隨著前端界面的元素越來越復雜,前端優化在性能測試過程中越來越重要。數據庫方面性能優化的升級主要包括關系型數據庫MySQL的監控與優化、非關系型數據庫Redis的監控與優化、Nginx的性能監控與優化,完善了JVM的監控與優化。
(3)性能測試流程。深入剖析了性能測試的整個過程,詳細介紹性能測試每個節點的工作內容、性能測試過程中的工作負載建模(建模是性能設計中最重要的環境,保證性能測試模擬的真實性),詳細介紹生產環境下如何進行性能測試。
本書完全可以脫離性能測試工具來介紹性能測試,因為現在性能測試的核心是性能優化,性能測試工具只是模擬產生壓力的一種方式,并不能提供更全面的監控信息,現在需要監控全鏈路過程中的每個服務器節點,只有這樣才能更好地幫助讀者解決性能問題,這也是本書最大的特點。
由于本次升級的內容比較多,書稿創作完成后達900多頁,其中既包含了性能測試基礎知識,又深入系統地講解了性能測試與調優的內容。但顯然,如果把這些內容放在一起,對于有一定測試基礎的讀者來講會產生不必要的成本支出。因此,本書把性能測試的基礎知識部分,即最新版的《性能測試基礎—LoadRunner完全講義》,制作成了電子版的形式,免費向零基礎讀者提供。有需要的讀者可掃描下面的二維碼獲取相關電子書的內容,以及本書中的源碼等學習資源。
在本書完成之際,感謝那些曾經幫助、支持和鼓勵過我的朋友。
由于編者水平有限,很多內容是自己的經驗總結,謬誤之處在所難免,歡迎廣大讀者批評指正。讀者在閱讀本書過程中如有任何不清楚的問題和批評、建議,可以發郵件到arivnhuang@163.com或直接加編者微信13590101972,編者將盡力給您答疑解惑。
最后,感謝您購買此書,希望您在書中可以找到那些正在困擾著您的問題的答案。
編 者
2022年5月
第一版前言
第1章 性能測試過程 1
1.1 性能測試過程概述 1
1.2 性能測試設計 2
1.2.1 需求調研 2
1.2.2 業務模型 3
1.2.3 場景模型 5
1.2.4 數據設計 6
1.2.5 環境設計 8
1.3 性能測試構建 9
1.3.1 用例設計 9
1.3.2 腳本開發 11
1.3.3 場景設計 12
1.3.4 搭建測試環境 13
1.3.5 準備數據 13
1.4 性能測試過程執行 13
1.5 性能測試分析、診斷、調節 13
1.6 小結 14
第2章 工作負載建模 15
2.1 什么是工作負載建模 15
2.2 工作負載建模主要活動 16
2.2.1 定義性能測試目標 16
2.2.2 理解應用程序 16
2.2.3 關鍵場景識別 17
2.2.4 確定關鍵場景使用路徑 17
2.2.5 確定唯一測試參數 18
2.2.6 確定場景中的相對負載分布 19
2.2.7 確定目標負載水平 19
2.2.8 其他項設置 20
2.3 小結 20
第3章 生產系統性能測試 21
3.1 什么是生產環境 21
3.2 生產環境性能測試風險 22
3.3 為什么需要在生產環境下進行性能測試 23
3.4 生產環境性能測試誤解 24
3.5 生產環境下性能測試最佳實踐 25
3.6 小結 26
第4章 特殊協議 27
4.1 Windows Sockets(WinSock)協議 27
4.1.1 Windows Sockets錄制選項設置 27
4.1.2 Windows Sockets錄制 29
4.1.3 Windows Sockets數據操作 33
4.1.4 關于LRS函數 35
4.2 郵件服務協議 41
4.2.1 郵件服務協議簡介 41
4.2.2 郵件服務協議錄制 43
4.2.3 腳本分析 48
4.2.4 關于SMTP和POP3函數 50
4.3 小結 52
第5章 基于接口性能測試 53
5.1 WSDL協議簡介 53
5.2 Web Service接口測試 56
5.2.1 選擇Web Services協議 56
5.2.2 選擇Manage Services管理待測試的
服務 57
5.2.3 Import Services導入服務 58
5.2.4 添加服務調用(Add Service Call) 60
5.2.5 調試腳本 63
5.2.6 增強腳本 64
5.3 web_service_call函數 65
5.4 Java環境 68
5.5 JavaVuser常用函數 69
5.6 JavaVuser腳本 70
5.6.1 手工插入Java的方法 71
5.6.2 增強Java腳本 72
5.6.3 Java腳本關聯 72
5.6.4 Java腳本參數化 72
5.7 web_submit_data 73
5.8 web_custom_request 76
5.9 小結 80
第6章 全鏈路腳本開發 81
6.1 什么是全鏈路性能腳本 81
6.2 如何將腳本封裝成.h頭文件 83
6.3 業務場景對全鏈路腳本的影響 86
6.3.1 關鍵場景識別 87
6.3.2 確定主要場景導航路徑 89
6.4 全鏈路腳本開發實例 89
6.5 小結 94
第7章 操作系統性能監控與調優 95
7.1 Windows操作系統監控 95
7.1.1 LoadRunner直接監控 95
7.1.2 Windows性能工具監控 96
7.1.3 Windows計數器 101
7.2 Linux/UNIX操作系統監控 107
7.2.1 程序執行模型 107
7.2.2 CPU監控 110
7.2.3 內存監控 115
7.2.4 磁盤監控 119
7.2.5 網絡監控 124
7.3 nmon系統資源監控工具 128
7.3.1 nmon工作流程 128
7.3.2 nmon命令 129
7.3.3 結果分析 137
7.4 小結 138
第8章 Apache監控與調優 139
8.1 Apache目錄結構 139
8.2 Apache配置文件 140
8.3 Apache監控 144
8.3.1 status模塊監控 144
8.3.2 Apachetop監控 151
8.4 Apache調優 154
8.4.1 硬件與操作系統 154
8.4.2 運行時的配置 155
8.4.3 編譯時的配置 159
8.5 MPM調優 161
8.5.1 選擇MPM 161
8.5.2 MPM模塊工作原理 162
8.5.3 MPM相關參數 165
8.6 日志文件分析 171
8.6.1 access_log日志文件 171
8.6.2 error_log日志文件 173
8.6.3 日志文件分析工具或指令 173
8.7 小結 175
第9章 Tomcat監控與調優 176
9.1 Tomcat結構體系 176
9.2 Tomcat監控 180
9.2.1 Status頁監控 180
9.2.2 JConsole監控 182
9.2.3 Probe監控 192
9.3 Tomcat調優 197
9.3.1 Tomcat配置 198
9.3.2 連接器配置 202
9.3.3 APR配置 207
9.4 JVM調優 211
9.4.1 JVM內存模型 211
9.4.2 堆與棧 214
9.4.3 PermGen與Metaspace的區別 215
9.4.4 GC回收機制 218
9.4.5 垃圾收集算法 219
9.4.6 垃圾回收器 223
9.4.7 類加載過程 230
9.4.8 JVM參數設置 231
9.5 日志文件分析 236
9.5.1 日志文件類型 236
9.5.2 日志文件配置 236
9.6 小結 239
第10章 Nginx監控與調優 240
10.1 Nginx三大工作模塊 241
10.1.1 Nginx啟動、停止 241
10.1.2 Nginx工作原理 242
10.1.3 Nginx進程模型 243
10.1.4 Nginx Http請求過程 243
10.2 Nginx配置上下文 245
10.3 Nginx監控 245
10.3.1 status監控 246
10.3.2 Ngxtop監控 247
10.4 Nginx負載均衡 251
10.4.1 負載均衡概述 251
10.4.2 Nginx負載均衡工作原理 251
10.4.3 設置Http負載均衡 252
10.4.4 負載均衡算法 253
10.4.5 設置服務器權重 255
10.4.6 慢啟動 257
10.4.7 限制連接數 257
10.4.8 開啟會話持久性 257
10.5 健康檢查 259
10.5.1 被動式健康檢查 259
10.5.2 主動式健康檢查 260
10.5.3 強制健康檢查 262
10.6 Nginx壓縮與解壓 263
10.6.1 啟用壓縮 264
10.6.2 啟用解縮 265
10.6.3 發送壓縮文件 266
10.7 Nginx緩存 266
10.7.1 啟用響應緩存 266
10.7.2 與進程相關的緩存 268
10.7.3 指定緩存的請求 268
10.7.4 限制或禁用響應緩存 269
10.7.5 清除緩存內容 269
10.7.6 字節范圍緩存 271
10.7.7 組合緩存配置實例 272
10.8 小結 273
第11章 MS SQL數據庫監控與調優 274
11.1 監控SQL Server資源 274
11.1.1 瓶頸類型 274
11.1.2 內存瓶頸 275
11.1.3 瓶頸類型 277
11.1.4 磁盤瓶頸 277
11.1.5 Wait Statistics監控 278
11.2 SQL Server等待類型 279
11.2.1 SQL等待類型 279
11.2.2 如何跟蹤等待 289
11.2.3 阻塞與鎖 291
11.3 SQL Profiler監控查詢 296
11.3.1 SQL Trace相關術語 296
11.3.2 SQL Trace選項 299
11.3.3 捕獲阻塞事件 303
11.3.4 捕獲Showplan XML數據 305
11.3.5 捕獲死鎖圖 308
11.3.6 SQL Profiler識別長時間查詢 311
11.3.7 Profile Trace與System Monitor
關聯 315
11.4 索引調優 317
11.4.1 索引原理 317
11.4.2 填充因子 317
11.4.3 聚集索引 318
11.4.4 非聚集索引 321
11.4.5 堆表 323
11.4.6 用DTA調校索引 323
11.4.7 索引維護 329
11.5 T-SQL調優 333
11.5.1 NOT IN和NOT EXISTS 333
11.5.2 謂詞的使用 334
11.5.3 為中間結果使用臨時表 335
11.6 小結 336
第12章 MySQL性能監控與調優 337
12.1 使用LoadRunner直接壓測MySQL 337
12.2 慢查詢 339
12.2.1 查看慢查詢相關設置 339
12.2.2 啟動和設置慢查詢 340
12.2.3 慢查詢日志文件分析 340
12.2.4 慢查詢日志分析工具
mysqldumpslow 341
12.3 EXPLAIN語句 343
12.3.1 EXPLAIN語法 343
12.3.2 EXPLAIN Output Columns輸出列 344
12.3.3 EXPLAIN Join Types連接方式 347
12.3.4 EXPLAIN Extra Information額外
信息 349
12.4 profile語句 352
12.4.1 開啟profile 352
12.4.2 show profile 352
12.5 索引 357
12.5.1 索引結構 357
12.5.2 索引常用策略 361
12.5.3 索引優缺點 372
12.6 查詢執行過程 372
12.7 SQL執行順序 376
12.8 優化數據類型和優化訪問數據 378
12.8.1 優化數據類型 378
12.8.2 常見數據類型 379
12.8.3 優化訪問數據 383
12.9 狀態監控 384
12.9.1 SHOW STATUS語句 384
12.9.2 SHOW STATUS變量 386
12.10 配置文件 389
12.10.1 使用選項文件 389
12.10.2 配置文件常見設置 390
12.11 小結 396
第13章 Redis性能監控與調優 397
13.1 使用LoadRunner調用Redis API進行
壓測 397
13.2 Redis Slowlog 401
13.2.1 什么是Slowlog 401
13.2.2 設置Slowlog 401
13.2.3 查看Slowlog 402
13.3 持久化 403
13.3.1 RDB持久化 404
13.3.2 AOF持久化 408
13.3.3 RDB和AOF的優缺點 411
13.3.4 備份策略RDB與AOF相互協同 411
13.4 主從復制 413
13.4.1 配置主從復制 413
13.4.2 斷開復制 415
13.4.3 主從復制工作原理 416
13.4.4 心跳 421
13.4.5 master關閉持久化,保證復制的
安全性 422
13.4.6 Redis復制如何處理過期的key 423
13.4.7 允許只寫入N個附加的副本 423
13.4.8 只讀性質的slave 424
13.4.9 重新啟動和故障轉移后的部分
同步 424
13.5 哨兵 425
13.5.1 為什么需要Sentinel 425
13.5.2 部署Sentinel 425
13.5.3 主觀下線和客觀下線 427
13.5.4 故障轉移 428
13.5.5 Sentinel配置項 429
13.6 內存優化 430
13.6.1 獲取內存數據 430
13.6.2 內存消耗模型 432
13.6.3 內存上限設置 434
13.6.4 回收內存策略 434
13.7 性能測試 436
13.7.1 性能測試工具redis-benchmark 436
13.7.2 延遲監控與分析 439
13.7.3 big key 446
13.7.4 Hot key 448
13.7.5 緩存粒度 451
13.7.6 緩存穿透 452
13.7.7 緩存擊穿 454
13.7.8 緩存雪崩 456
13.8 小結 457
第14章 前端性能監控與調優 458
14.1 前端監控工具YSlow 458
14.1.1 安裝YSlow 458
14.1.2 使用YSlow 459
14.2 23大前端性能規則 462
14.2.1 最小化HTTP請求 462
14.2.2 使用內容發布網絡 463
14.2.3 添加Expires頭 463
14.2.4 Gzip組件 465
14.2.5 將樣式表放在頂部 465
14.2.6 將腳本放在底部 466
14.2.7 避免使用CSS表達式 468
14.2.8 將JavaScript和CSS置于外部 469
14.2.9 減少DNS查找 471
14.2.10 精簡JavaScript和CSS 472
14.2.11 避免重定向 474
14.2.12 刪除重復腳本 478
14.2.13 配置ETags 478
14.2.14 使AJAX可緩存 480
14.2.15 AJAX使用Get請求 481
14.2.16 減少DOM數 483
14.2.17 避免空鏈接 485
14.2.18 避免404錯誤 486
14.2.19 減少Cookie的大小 488
14.2.20 使用一些空閑Cookie的域 492
14.2.21 避免過濾器 494
14.2.22 不要縮放圖片 496
14.2.23 使用icon格式圖片和使用緩存 496
14.3 小結 497
- 功能材料制備與表征實驗指導書 [龔偉平 趙軍峰 梅海娟 等編著]
- Python 語言程序設計實踐指導 [主編 張雙獅]
- Python程序設計案例教程 [主編 毛錦庚 鐘肖英 周賢來 ]
- Python語言同步案例習題精解 [主編 肖朝暉]
- 簡單易懂的Python入門教程 [[日]大澤文孝 著]
- Python數據分析之道——Thinking in Pandas [[美]漢娜·斯捷潘內克(Hannah S]
- python青少年趣味編程 [千鋒教育 編著]
- Python程序設計與應用 [主編 張廣淵]
- Python基礎實例教程 [秦穎 編著]
- Python程序設計教程 [主編 李治國 武春嶺]
- Python開發向導 [主編 肖睿 盛鴻宇]
- 嵌入式Qt開發項目教程 [主編 王浩 陳邦瓊]
- 常用工具軟件實用教程 [劉 毅 張 波]
- 多媒體CAI課件制作教程 [主 編 范強]
- LoadRunner性能測試完全講義(第二版) [黃文高 編著]
- 深入性能測試——LoadRunner性能測試、流程、監控、調優全程實戰剖析 [何月順 黃文高 編著]
- 常用工具軟件實用教程(第二版) [張懷中 王國順]