性能測(cè)試診斷分析與優(yōu)化.pptx
《性能測(cè)試診斷分析與優(yōu)化.pptx》由會(huì)員分享,可在線閱讀,更多相關(guān)《性能測(cè)試診斷分析與優(yōu)化.pptx(116頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、性能測(cè)試診斷分析與優(yōu)化,陳能技 嘉為IT培訓(xùn)學(xué)院,培訓(xùn)講師介紹,陳能技 () 11年軟件測(cè)試與質(zhì)量管理經(jīng)驗(yàn) 著作: 軟件測(cè)試技術(shù)大全 .NET軟件測(cè)試實(shí)戰(zhàn)技術(shù)大全 QTP自動(dòng)化測(cè)試最佳實(shí)踐 軟件自動(dòng)化測(cè)試成功之道 性能測(cè)試診斷分析與優(yōu)化,培訓(xùn)課堂的注意事項(xiàng),培訓(xùn)中 積極、主動(dòng)不僅使您獲得更多的收獲,也使培訓(xùn)講師能有的放矢、保持激情。 持之以恒、集中精力,您收獲的將不僅是知識(shí); 請(qǐng)您記得將手機(jī)調(diào)至震動(dòng)狀態(tài)或關(guān)機(jī),以免影響您的同學(xué)。 培訓(xùn)后 填寫課程反饋表 刪除桌面臨時(shí)文件 關(guān)機(jī),培訓(xùn)后事項(xiàng),填寫課程反饋表 刪除桌面臨時(shí)文件 關(guān)機(jī),性能監(jiān)控方法 性能診斷分析與優(yōu)化 性能測(cè)試新興技術(shù)介紹,一、性能監(jiān)
2、控方法,操作系統(tǒng)層性能監(jiān)控 Web服務(wù)器性能監(jiān)控 中間件服務(wù)器性能監(jiān)控,1、操作系統(tǒng)層性能監(jiān)控,CPU性能監(jiān)控 內(nèi)存性能監(jiān)控 磁盤IO性能監(jiān)控 網(wǎng)絡(luò)性能監(jiān)控 開源網(wǎng)絡(luò)性能監(jiān)控工具的應(yīng)用 使用Spotlight監(jiān)控操作系統(tǒng),CPU性能監(jiān)控,查看CPU信息: cat /proc/cpuinfo Top Vmstat 2 3 Dstat -cip 1 Mpstat -P ALL 1 Sar 1 10 Pidstat -p 2 5,Top,使用方式:top - d delay q c S s i n b 說(shuō)明:即時(shí)顯示process的動(dòng)態(tài) d :改變顯示的更新速度,或是在交談式指令列( interac
3、tive command)按s q :沒有任何延遲的顯示速度,如果使用者是有superuser的權(quán)限,則top將會(huì)以最高的優(yōu)先序執(zhí)行 c :切換顯示模式,共有兩種模式,一是只顯示執(zhí)行檔的名稱,另一種是顯示完整的路徑與名稱S :累積模式,會(huì)將己完成或消失的子行程( dead child process )的CPU time累積起來(lái) s :安全模式,將交談式指令取消,避免潛在的危機(jī) i :不顯示任何閑置(idle)或無(wú)用(zombie)的行程 n :更新的次數(shù),完成后將會(huì)退出top b :批次檔模式,搭配n參數(shù)一起使用,可以用來(lái)將top的結(jié)果輸出到檔案內(nèi),范例: 顯示更新十次后退出; top -n
4、 10 將更新顯示二次的結(jié)果輸入到名稱為top.log的檔案里: top -n 2 -b top.log,Vmstat,r表示運(yùn)行隊(duì)列的大小 b表示由于IO等待而block的線程數(shù)量 in表示中斷的數(shù)量 cs表示上下文切換的數(shù)量 us表示用戶CPU時(shí)間 sys表示系統(tǒng)CPU時(shí)間 wa表示由于IO等待而是CPU處于idle狀態(tài)的時(shí)間 id表示CPU處于idle狀態(tài)的總時(shí)間,DSTAT,dstat可以給出每一個(gè)設(shè)備產(chǎn)生的中斷數(shù) 設(shè)備名和設(shè)備號(hào)的關(guān)系可以參考文件 /proc/interrupts,Mpstat,mpstat可以顯示每個(gè)CPU的運(yùn)行狀況,比如系統(tǒng)有4個(gè)CPU。我們可以看到: # mps
5、tat P ALL 1 Linux 2.4.21-20.ELsmp (localhost.localdomain) 05/23/2006 05:17:31 PM CPU %user %nice %system %idle intr/s 05:17:32 PM all 0.00 0.00 3.19 96.53 13.27 05:17:32 PM 0 0.00 0.00 0.00 100.00 0.00 05:17:32 PM 1 1.12 0.00 12.73 86.15 13.27 05:17:32 PM 2 0.00 0.00 0.00 100.00 0.00 05:17:32 PM 3 0
6、.00 0.00 0.00 100.00 0.00,sar,%user列顯示了用戶進(jìn)程消耗的CPU時(shí)間百分比。 %nice列顯示了運(yùn)行正常進(jìn)程所消耗的CPU時(shí)間百分比。 %system列顯示了系統(tǒng)進(jìn)程消耗的CPU時(shí)間百分比。 %iowait列顯示了IO等待所占用的CPU時(shí)間百分比 %steal列顯示了在內(nèi)存相對(duì)緊張的環(huán)境下pagein強(qiáng)制對(duì)不同的頁(yè)面進(jìn)行的steal操作。 %idle列顯示了CPU處在空閑狀態(tài)的時(shí)間百分比。 sar 2 5 // 每隔2秒,顯示5次,CPU使用的情況 sar支持保存成兩種格式的文件,一種是文本文件,一種是二進(jìn)制文件(只有通過(guò)sar自己的命令才能查看) sar 1
7、 10 data.txt sar 1 5 - o data // 每隔1秒,寫入5次,將CPU使用的數(shù)據(jù)寫入二進(jìn)制文件data中。 sar - f data // 查看data文件,Pidstat,監(jiān)視某個(gè)進(jìn)程的CPU使用情況 1.通過(guò)ps命令找到相應(yīng)進(jìn)程的PID: ps - e 2.使用pidstat命令監(jiān)視進(jìn)程,詳細(xì)用法見:http://pagesperso-orange.fr/sebastien.godard/man_pidstat.html pidstat 2 5 每隔2秒,顯示5次,所有活動(dòng)進(jìn)程的CPU 使用情況 pidstat - p 3132 2 5 每隔2秒,顯示5次,PID為
8、1643的進(jìn)程的CPU使用情況顯示 pidstat - p 3132 2 5 - r 每隔2秒,顯示5次,PID為1643的進(jìn)程的內(nèi)存使用情況顯示,內(nèi)存性能監(jiān)控,查看內(nèi)存信息: cat /proc/meminfo Free m Vmstat 2 10 Top Ps,free,$ free -m total used free shared buffers cached Mem: 1002 769 232 0 62 421 -/+ buffers/cache: 286 715 Swap: 1153 0 1153,第一部分Mem行: total 內(nèi)存總數(shù): 1002M
9、used 已經(jīng)使用的內(nèi)存數(shù): 769M free 空閑的內(nèi)存數(shù): 232M shared 當(dāng)前已經(jīng)廢棄不用,總是0 buffers Buffer緩存內(nèi)存數(shù): 62M cached Page緩存內(nèi)存數(shù):421M 關(guān)系:total(1002M) = used(769M) + free(232M),第二部分(-/+ buffers/cache): (-buffers/cache) used內(nèi)存數(shù):286M (指的第一部分Mem行中的used - buffers - cached) (+buffers/cache) free內(nèi)存數(shù): 715M (指的第一部分Mem行中的free + buffers +
10、 cached) 可見-buffers/cache反映的是被程序?qū)崒?shí)在在吃掉的內(nèi)存,而+buffers/cache反映的是可以挪用的內(nèi)存總數(shù)。,vmstat,,vmstat,memory swpd列表示切換到內(nèi)存交換區(qū)的內(nèi)存數(shù)量(以k為單位)。如果swpd的值不為0,或者比較大,只要si、so的值長(zhǎng)期為0,這種情況下一般不用擔(dān)心,不會(huì)影響系統(tǒng)性能。 free列表示當(dāng)前空閑的物理內(nèi)存數(shù)量(以k為單位) buff列表示buffers cache的內(nèi)存數(shù)量,一般對(duì)塊設(shè)備的讀寫才需要緩沖。 cache列表示page cached的內(nèi)存數(shù)量,一般作為文件系統(tǒng)cached,頻繁訪問(wèn)的文件都會(huì)被cached
11、,如果cache值較大,說(shuō)明cached的文件數(shù)較多,如果此時(shí)IO中bi比較小,說(shuō)明文件系統(tǒng)效率比較好。 swap si 列表示由磁盤調(diào)入內(nèi)存,也就是內(nèi)存進(jìn)入內(nèi)存交換區(qū)的數(shù)量。 so列表示由內(nèi)存調(diào)入磁盤,也就是內(nèi)存交換區(qū)進(jìn)入內(nèi)存的數(shù)量。 一般情況下,si、so的值都為0,如果si、so的值長(zhǎng)期不為0,則表示系統(tǒng)內(nèi)存不足。需要增加系統(tǒng)內(nèi)存。,監(jiān)控單個(gè)進(jìn)程占用內(nèi)存的情況,top -d 1然后shift + m(Sort by memory usage) Ps aux | grep HoldMemoryMain top -b -n1 -p 21642 | tail -2|head -1|awk pr
12、int $5 VIRT=SWAP+RES VIRT 進(jìn)程使用的虛擬內(nèi)存總量,單位kb SWAP 進(jìn)程使用的虛擬內(nèi)存中,被換出的大小,單位kb RES 進(jìn)程使用的、未被換出的物理內(nèi)存大小,單位kb,磁盤性能監(jiān)控,df -hlT parted -l Vmstat iostat -d 2 3 sar -d 2 3 Iotop pidstat iodump,iostat,,iotop,pidstat,pidstat -d 1 pidstat -C test_io -t -d 1,iodump,wget echo 1 /proc/sys/vm/block_dump,rootkanga:# while t
13、rue; do sleep 1; dmesg -c; done | perl iodump C# Caught SIGINT. TASK PID TOTAL READ WRITE DIRTY DEVICES firefox 4450 4538 251 4287 0 sda4, sda3 kjournald 2100 551 0 551 0 sda4 firefox 28452 185 185 0 0 sda4 kjournald 782 59 0 59 0 sda3 pdflush 31 30
14、 0 30 0 sda4, sda3 syslogd 2485 2 0 2 0 sda3 firefox 28414 2 2 0 0 sda4, sda3 firefox 28413 1 1 0 0 sda4 firefox 28410 1 1 0 0 sda4 firefox 28307 1 1 0 0 sda4 firefox 28451 1 1 0 0 sda4,網(wǎng)絡(luò)性能監(jiān)控,ping Netstat -i Sar -n DEV 1 3 Sar
15、-n SOCK 1 3 ifTop、ipTraf,ifTop,,開源性能監(jiān)控工具的應(yīng)用,Cacti、Nagios Nmon ,Cacti,Cacti是一套基于PHP,MySQL,SNMP及 RRDTool開發(fā)的監(jiān)控工具,可以監(jiān)控主機(jī)的狀態(tài)和負(fù)載情況,添加相應(yīng)的模板后,可以用來(lái)監(jiān)控 Apache、MySQL 等服務(wù)器的運(yùn)行狀態(tài)。,Nmon,Nmon是IBM提供的開源監(jiān)控工具,可對(duì)AIX和Linux系統(tǒng)資源進(jìn)行監(jiān)控,可收集系統(tǒng)資源使用情況并輸出到特定文件,并可利用Excel分析工具進(jìn)行數(shù)據(jù)統(tǒng)計(jì)分析。,使用Spotlight監(jiān)控操作系統(tǒng),,2、Web服務(wù)器性能監(jiān)控,IHS性能監(jiān)控方法 HTTP連接狀
16、態(tài)監(jiān)控 Web服務(wù)器吞吐量監(jiān)控,IHS性能監(jiān)控,打開server-status監(jiān)控 狀態(tài)監(jiān)控頁(yè)面,打開server-status監(jiān)控,LoadModule status_module modules/ApacheModuleStatus.dll # Allow server status reports, with the URL of http://servername/server-status # Change the .your_ to match your domain to enable. SetHandler server-status order deny,allow deny
17、 from all allow from 127.0.0.1 ,狀態(tài)監(jiān)控頁(yè)面,Scoreboard Key: _ Waiting for Connection, S Starting up, R Reading Request, W Sending Reply, K Keepalive (read), D DNS Lookup, L Logging, G Gracefully finishing, . Open slot with no current process,Web服務(wù)器網(wǎng)絡(luò)連接監(jiān)控,Linux下實(shí)時(shí)檢測(cè)httpd連接數(shù) watch -n 1 -d pgrep httpd|wc -l
18、“ 查看TCP并發(fā)連接情況: netstat -n | awk /tcp/ ++S$NF END for(a in S) print a, Sa,Web服務(wù)器網(wǎng)絡(luò)連接監(jiān)控,3、中間件服務(wù)器性能監(jiān)控,WAS性能監(jiān)控 WAS自帶監(jiān)控工具的使用 perfServletApp的使用方法 LoadRunner監(jiān)控WAS 使用AppDynamics監(jiān)控WebSphere JVM性能監(jiān)控方法及工具 GC日志監(jiān)控分析 Thread Dump JVM遠(yuǎn)程監(jiān)控 JDBC性能監(jiān)控,WAS性能漏斗模型,WAS性能監(jiān)控的方面,Session 線程池 JDBC連接 JVM性能,WAS性能監(jiān)控的方法和工具,WAS自帶性能監(jiān)
19、控工具的使用 perfServletApp的使用方法 LoadRunner監(jiān)控WAS,WAS自帶性能監(jiān)控工具的使用,WAS自帶性能監(jiān)控工具的使用,用TPV監(jiān)控JVM發(fā)現(xiàn)內(nèi)存泄漏現(xiàn)象,perfServletApp的使用方法,部署PerfServletApp.ear到WebSphere目錄下,perfServletApp的使用方法,LoadRunner監(jiān)控WAS,JVM性能監(jiān)控通用方法,JConsole實(shí)時(shí)監(jiān)控JVM GC日志分析 Heap Dump Thread Dump,JVM性能監(jiān)控通用方法-JConsole實(shí)時(shí)監(jiān)控JVM,JVM性能監(jiān)控通用方法-GC日志分析,打開 WAS GC日志,打開W
20、AS GC日志 Java和進(jìn)程管理-進(jìn)程定義-Java虛擬機(jī)-詳細(xì)垃圾回收(保存配置后重新啟動(dòng)服務(wù)生效) Java和進(jìn)程管理-進(jìn)程定義-Java虛擬機(jī)-運(yùn)行時(shí)-詳細(xì)垃圾回收(確認(rèn)后立即生效) 在通用JVM參數(shù)輸入框中添加:-Xverbosegclog:gc.log JVM GC日志的保存目錄 WASHOME/profiles/yourprofile/logs/yourserver/native_stderr.log 和 native_stdout.log C:WebSphereAppServerprofilesAppSrv01gc.log,GC日志分析工具,IBM Support Assist
21、ant - Garbage Collection and Memory Visualizer IBM Pattern Modeling and Analysis Tool(PMAT) GCViewer ,JVM性能監(jiān)控通用方法- Heap Dump,heapdump文件是一個(gè)二進(jìn)制文件,它保存了某一時(shí)刻jvm堆中對(duì)象情況,這種文件需要相應(yīng)的工具進(jìn)行分析,例如 heapanalyzer。這個(gè)文件最重要的作用就是分析系統(tǒng)是否存在內(nèi)存溢出的情況,通過(guò)heapanalyzer可以很簡(jiǎn)單地分析出溢出的位置。 產(chǎn)生WAS Heap Dump的方法,JVM性能監(jiān)控通用方法-Thread Dump,線程監(jiān)控和
22、分析工具,Thread dump提供了當(dāng)前活動(dòng)的線程的快照.它提供了JVM中所有Java線程的棧跟蹤信息 產(chǎn)生WAS Thread Dump的方法 Jconsole VisualVM JProfiler Thread Dump Analyzer IBM Thread and Monitor Dump Analyzer for Java,JVM遠(yuǎn)程監(jiān)控,Jstatd Jconsolevisualvm Jprofile,中間件性能監(jiān)控與分析工具,HP Diagnostics JProfiler JProbe YourKit AppDynamics DomainHealth Javamelody J
23、AMON,AppDynamics,WAS的Session監(jiān)控與分析,ActiveCount:正在處理請(qǐng)求的Session數(shù)量 LiveCount:目前緩存在內(nèi)存中的本地Session的數(shù)量,WAS線程數(shù)監(jiān)控分析,ActiveCount: 處于激活狀態(tài)的線程數(shù)。 PoolSize: 線程池中的平均線程數(shù)。 PercentMaxed: 所有線程在使用的時(shí)間的平均百分比。 DeclaredthreadHungCount: 掛起的線程數(shù)。,WAS的JDBC連接池監(jiān)控,WaitingThreadCount: 當(dāng)前等待連接的線程。 FaultCount: 在連接池中出現(xiàn)錯(cuò)誤(例如超時(shí))的數(shù)量。 Perce
24、ntUsed: 當(dāng)前連接池中被使用的平均百分比。,JDBC性能分析,P6spy + sqlprofiler JDbMonitor JAMON,JProfiler監(jiān)控JDBC,,二、性能診斷分析與優(yōu)化,操作系統(tǒng)層性能分析與優(yōu)化 HIS服務(wù)器配置優(yōu)化 中間件性能分析與優(yōu)化 JVM性能分析 使用JConsoleJava VisualVM監(jiān)控和分析WebSphere的JVM性能 JVM參數(shù)調(diào)整與優(yōu)化 利用JProfiler分析定位Java內(nèi)存泄漏問(wèn)題 Java代碼線程死鎖問(wèn)題分析與定位 JSPServlet性能優(yōu)化方法,操作系統(tǒng)層性能分析與優(yōu)化,Linux系統(tǒng)性能診斷 操作系統(tǒng)性能調(diào)優(yōu),Linux系統(tǒng)
25、性能診斷,CPU,對(duì)于每一個(gè)CPU來(lái)說(shuō)運(yùn)行隊(duì)列不要超過(guò)3,例如,如果是雙核CPU就不要超過(guò)6; 如果CPU在滿負(fù)荷運(yùn)行,應(yīng)該符合下列分布, a) User Time:65%70% b) System Time:30%35% c) Idle:0%5% 對(duì)于上下文切換要結(jié)合CPU使用率來(lái)看,如果CPU使用滿足上述分布,大量的上下文切換也是可以接受的。,內(nèi)存,(-/+ buffers/cache)的free和used Swap(si 、so),內(nèi)存分析案例,上面是一個(gè)頻繁讀寫交換區(qū)的例子,可以觀察到以下幾點(diǎn): 物理可用內(nèi)存 free 基本沒什么顯著變化,swapd 逐步增加 當(dāng)臟頁(yè)達(dá)到10的時(shí)候就開
26、始大量使用 swap,free目前的值約等于256MB*10%=2.56MB buff 穩(wěn)步減少說(shuō)明系統(tǒng)知道內(nèi)存不夠了,kwapd 正在從 buff 那里借用部分內(nèi)存 kswapd 持續(xù)把臟頁(yè)面寫到 swap 交換區(qū)(so),從 swapd 逐漸增加看出確實(shí)如此,IO,同一時(shí)間進(jìn)行大量的I/O操作 在這種情況時(shí)我們會(huì)發(fā)現(xiàn)CPU的wa時(shí)間百分比會(huì)上升,證明系統(tǒng)的idle時(shí)間大部分都是在等待I/O操作。,從這個(gè)輸出我們可以看到CPU有50%的時(shí)間都在等待I/O操作,我們還可以看到系統(tǒng)的bi值很大,證明系統(tǒng)有大量的I/O請(qǐng)求將磁盤內(nèi)容讀入內(nèi)存。,IO,將top的輸出通過(guò)faults進(jìn)行排序。我們可以
27、看到vmware產(chǎn)生最多的page faults。也就是說(shuō)它進(jìn)行了大量的IO操作。,IO,任何I/O操作都需要一定的時(shí)間,而且這些時(shí)間對(duì)于硬盤來(lái)說(shuō)是確定的,它包含磁盤旋轉(zhuǎn)的延時(shí)RD(rotation delay)和磁頭搜索時(shí)間DS(disk seek)。 RD由磁盤轉(zhuǎn)速(RPM)決定。RD是磁盤旋轉(zhuǎn)一周所需時(shí)間的一半。如RPM為10000(1分鐘轉(zhuǎn)1萬(wàn)次). RPS=RPM/60=166(1秒轉(zhuǎn)166次)。1/166=0.0006=6ms (磁盤旋轉(zhuǎn)一周要6毫秒)。RD=6ms/2=3ms 磁盤平均搜索時(shí)間是3ms,數(shù)據(jù)傳輸?shù)钠骄訒r(shí)是2ms,這樣一次I/O操作的平均時(shí)間是:3ms+3ms+2
28、ms=8ms IOPS=1000/8=125 這塊磁盤的每秒IO數(shù)(IOPS)為125。所以對(duì)于10000RPM的磁盤來(lái)說(shuō)它所能承受的IO操作在IOPS在120150之間。如果系統(tǒng)的I/O請(qǐng)求超過(guò)這個(gè)值,就會(huì)使磁盤成為系統(tǒng)的瓶頸。,連續(xù)I/O vs.隨機(jī)I/O,連續(xù)I/O常常出現(xiàn)在企業(yè)級(jí)數(shù)據(jù)庫(kù)這樣的應(yīng)用中,需要連續(xù)的讀取大量數(shù)據(jù)。這種系統(tǒng)的性能依靠它讀取和移動(dòng)數(shù)據(jù)的大小和快慢。我們用iostat來(lái)監(jiān)控,會(huì)發(fā)現(xiàn)rKB/s和wKB/s會(huì)很高。,Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz a
29、wait svctm %util /dev/sda 0.00 12891.43 0.00 105.71 0.00 106080.00 0.00 53040.00 1003.46 1099.43 3442.43 26.49 280.00,從輸出我們看到w/s=105,wKB/s=53040.所以53040/105=505KB per I/O.,連續(xù)I/O vs.隨機(jī)I/O,對(duì)于隨機(jī)I/O的系統(tǒng)來(lái)說(shuō)性能的關(guān)注點(diǎn)不在搜傳輸數(shù)據(jù)的大小和速度,而是在磁盤的IOPS。這類系統(tǒng)的I/O請(qǐng)求比較小但是數(shù)量很大,如Web服務(wù)器和Mail服務(wù)器。他們的性能主要依賴每秒鐘可處理的請(qǐng)求數(shù):,Device: rrqm/
30、s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util /dev/sda 0.00 633.67 3.06 102.31 24.49 5281.63 12.24 2640.82 288.89 73.67 113.89 27.22 50.00,從輸出我們看到w/s=102,wKB/s=2640.所以2640/102=23KB per I/O. 因此對(duì)于連續(xù)I/O系統(tǒng)來(lái)說(shuō)我們要關(guān)注系統(tǒng)讀取大量數(shù)據(jù)的能力即KB per request. 對(duì)于隨機(jī)I/O系統(tǒng)我們注重IOPS值.,操作系統(tǒng)性能調(diào)優(yōu),系
31、統(tǒng)安裝優(yōu)化 RAID SWAP分區(qū) 系統(tǒng)安裝后的初步調(diào)整優(yōu)化 檢查系統(tǒng)是否正常 關(guān)閉不需要的服務(wù) 對(duì)TCP/IP網(wǎng)絡(luò)參數(shù)進(jìn)行調(diào)整 內(nèi)核參數(shù)優(yōu)化 針對(duì)Web服務(wù)器的網(wǎng)絡(luò)參數(shù)優(yōu)化 針對(duì)數(shù)據(jù)庫(kù)服務(wù)器的內(nèi)核參數(shù)優(yōu)化,IHS服務(wù)器配置優(yōu)化,MPM對(duì)Apache性能的影響 影響性能的配置 并發(fā)線程相關(guān)的設(shè)置 日志對(duì)性能的影響 壓縮 mod_cache,中間件性能分析與優(yōu)化,IHS優(yōu)化 WAS Session優(yōu)化 內(nèi)存中最大會(huì)話量 Session超時(shí) WAS線程池優(yōu)化 WAS JDBC連接池優(yōu)化 連接超時(shí) 最大連接數(shù) 最小連接數(shù) JVM性能分析與優(yōu)化,,應(yīng)用層攻擊,數(shù)據(jù)庫(kù)服務(wù)器,JDBC數(shù)據(jù)庫(kù)連接典型問(wèn)題分
32、析,某電網(wǎng)公司企業(yè)網(wǎng)站標(biāo)準(zhǔn)化系統(tǒng),在100個(gè)并發(fā)用戶壓力下進(jìn)行內(nèi)網(wǎng)網(wǎng)站首頁(yè)訪問(wèn)登錄操作,發(fā)現(xiàn)該系統(tǒng)的應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器連接異常,大量出現(xiàn)錯(cuò)誤,測(cè)試軟件報(bào)錯(cuò)信息如下:,通過(guò)對(duì)分析,發(fā)現(xiàn)部分連接參數(shù)設(shè)置太小,對(duì)連接參數(shù)進(jìn)行調(diào)整后,測(cè)試組對(duì)系統(tǒng)進(jìn)行了再次測(cè)試,基本不存在連接失敗的情況。,,應(yīng)用層攻擊,某電網(wǎng)公司人力資源系統(tǒng),員工名冊(cè)查詢無(wú)法做壓力測(cè)試,響應(yīng)超時(shí)的問(wèn)題,主要是請(qǐng)求的sql太長(zhǎng)了,com.sophia.hr.modules.employee.external.impl.EmployeeServiceImpl.java類,修改了方法empListSQL4Info方法,再次測(cè)試,響應(yīng)時(shí)
33、間明顯改善。,JDBC數(shù)據(jù)庫(kù)連接典型問(wèn)題分析,,應(yīng)用層攻擊,某電商網(wǎng)站,JDBC數(shù)據(jù)庫(kù)連接典型問(wèn)題分析,Caused by: java.sql.SQLException: We are already in the process of making 11 connections and the number of simultaneous builds has been throttled to 10,JVM性能分析,JVM垃圾回收對(duì)性能的影響 吞吐量、GC停頓 JVM內(nèi)存泄漏診斷 線程問(wèn)題診斷 JVM堆大小對(duì)垃圾回收、系統(tǒng)吞吐量的影響 GC策略對(duì)系統(tǒng)性能的影響,JVM的堆,JVM年輕代與年
34、老代,Minor GC的過(guò)程,Full GC,Full GC對(duì)性能的影響 jstat -gc pid 可以顯示gc的信息,查看gc的次數(shù),及時(shí)間。 其中最后五項(xiàng),分別是young gc的次數(shù),young gc的時(shí)間,full gc的次數(shù),full gc的時(shí)間,gc的總時(shí)間。,GC日志人肉分析,WAS GC日志分析工具,用PMAT分析GC日志 java -Xmx512m -jar ga414.jar GCViewer,WAS GC 日志分析 案例,WAS GC 日志分析 案例,可以看到Full GC非常多,占所有pause時(shí)間比達(dá)到65.9%,這是有問(wèn)題的,GC應(yīng)該盡可能在年輕代完成,而不是到年
35、老代,JVM堆大小對(duì)垃圾回收、系統(tǒng)吞吐量的影響,案例 - PlantsByWebSphere JConsole遠(yuǎn)程監(jiān)控WAS JProfiler查看GC Activity(垃圾回收器的活動(dòng)占用整體時(shí)間的百分比),案例,某電網(wǎng)公司可靠性系統(tǒng) JVM內(nèi)存不足、頻繁GC、服務(wù)器CPU忙,JVM參數(shù)調(diào)整與優(yōu)化,JVM堆參數(shù)設(shè)置 GC參數(shù)設(shè)置,GC策略對(duì)系統(tǒng)性能的影響,新生代串行收集器 老年代串行收集器 并行收集器 新生代并行回收收集器 老年代并行回收收集器 CMS(Concurrent Mark Sweep)收集器,-Xgcpolicy:optthruput -Xgcpolicy:optavgpaus
36、e -Xgcpolicy:gencon -Xgcpolicy:balanced,案例 PlantsByWebSphere,Java代碼性能問(wèn)題診斷分析與優(yōu)化,Java代碼性能分析 JSPServlet性能分析與優(yōu)化 JDBC性能分析與優(yōu)化 JProfiler等性能分析工具的應(yīng)用,Java代碼性能分析,代碼執(zhí)行效率 CPU使用 內(nèi)存使用 IO使用 線程鎖,JAVA代碼執(zhí)行效率監(jiān)控分析,JAVA CPU使用監(jiān)控分析,查看java進(jìn)程: jps 確認(rèn)java進(jìn)程CPU性能: pidstat -p -u 1 3 進(jìn)一步查看線程CPU性能,定位到CPU高消耗的線程ID: pidstat -p 1 3
37、 -u -t 根據(jù)定位到的線程ID,使用jstack導(dǎo)出線程堆棧進(jìn)行驗(yàn)證: jstack -l /tmp/t.txt 在導(dǎo)出的線程堆棧中查找引起高CPU消耗的線程ID(nid),需要從十六進(jìn)制轉(zhuǎn)換為10進(jìn)制,從而定位到哪個(gè)線程的Java代碼執(zhí)行導(dǎo)致占用大量CPU,JAVA內(nèi)存使用監(jiān)控分析,JProfiler性能分析工具的應(yīng)用,案例演練-Java內(nèi)存泄漏檢測(cè),TestMem,JAVA I/O使用監(jiān)控分析,iostat -dx 3 jps pidstat -p -d -t 1 3 jstack -l /tmp/t.txt,Java線程鎖監(jiān)控分析,Jstack監(jiān)控JAVA線程死鎖,jps jst
38、ack -l 1.txt 查找輸出結(jié)果定位死鎖,WAS線程Dump,Linux下命令行啟動(dòng)WAS, Kill -3 /opt/IBM/WebSphere/AppServer/profiles/AppSrv01,Idle線程:一個(gè)已經(jīng)準(zhǔn)備好接受請(qǐng)求的線程,但是沒有和插件或者客戶端建立連接 Keep-Alive線程:是一個(gè)已經(jīng)準(zhǔn)備好接受請(qǐng)求的線程,并且已經(jīng)和插件或者客戶端建立連接 正在接受請(qǐng)求的線程:是一個(gè)線程正在讀取request的內(nèi)容或者頭部,WAS線程Dump分析工具,IBM Thread and Monitor Dump Analyzer for Java java -Xmx500m -j
39、ar jca101.jar,JSPServlet性能分析與優(yōu)化,JSP 、Servlet常見性能問(wèn)題分析與優(yōu)化 工具 AppDynamics、JProfiler JAMON,JSP 、Servlet常見性能問(wèn)題分析與優(yōu)化,頁(yè)面包含 Page Session JavaBean的生命周期 Session過(guò)期時(shí)間 init()方法與緩存 壓縮輸出,三、性能測(cè)試新興技術(shù)介紹,開源性能壓力測(cè)試工具介紹 云性能測(cè)試服務(wù)介紹 端到端性能測(cè)試與性能監(jiān)控方案,開源性能壓力測(cè)試工具介紹,早期:Jmeter、The Grinder Tsung Gatling,Tsung,http://tsung.erlang-pr
40、ojects.org/ Jabber/XMPP協(xié)議90萬(wàn)并發(fā)jabber用戶(使用4個(gè)節(jié)點(diǎn)的tsung 集群)(3xSun V240 + 1 Sun V440)10萬(wàn)并發(fā)用戶(使用3個(gè)結(jié)點(diǎn)tsung集群)(CPU 800MHz) HTTP and HTTPS協(xié)議12萬(wàn)并發(fā)用戶(使用4個(gè)結(jié)點(diǎn)的tsung集群)該測(cè)試平臺(tái)達(dá)到每秒3000個(gè)請(qǐng)求1000萬(wàn)并發(fā)用戶,(使用75結(jié)點(diǎn)的tsung集群,)并發(fā)超過(guò)100萬(wàn)個(gè)請(qǐng)求 目前可以用來(lái)測(cè)試HTTP,WebDAV,SOAP,PostgreSQL, MySQL, LDAP, and Jabber/XMPP,Gatling,Gatling是一款基于Scala
41、 開發(fā)的高性能服務(wù)器性能測(cè)試工具,它主要用于對(duì)服務(wù)器進(jìn)行負(fù)載等測(cè)試,并分析和測(cè)量服務(wù)器的各種性能指標(biāo)。Gatling主要用于測(cè)量基于HTTP的服務(wù)器,比如Web應(yīng)用程序,RESTful服務(wù)等,除此之外它擁有以下特點(diǎn): 支持Akka Actors 和 Async IO,從而能達(dá)到很高的性能 支持實(shí)時(shí)生成Html動(dòng)態(tài)輕量報(bào)表,從而使報(bào)表更易閱讀和進(jìn)行數(shù)據(jù)分析 支持DSL腳本,從而使測(cè)試腳本更易開發(fā)與維護(hù) 支持錄制并生成測(cè)試腳本,從而可以方便的生成測(cè)試腳本 支持導(dǎo)入HAR(Http Archive)并生成測(cè)試腳本 支持Maven,Eclipse,IntelliJ等,以便于開發(fā) 支持Jenkins,以便于進(jìn)行持續(xù)集成 支持插件,從而可以擴(kuò)展其功能,比如可以擴(kuò)展對(duì)其他協(xié)議的支持,云性能測(cè)試,SOASTA Gomez,NeoLoad的云測(cè)試方案,,端到端性能測(cè)試與性能監(jiān)控方案,培訓(xùn)后事項(xiàng),填寫課程反饋表 刪除桌面臨時(shí)文件 關(guān)機(jī),陳能技,
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案