性能測試分析web
1、分析原則sql
一、根據場景運行過程當中的錯誤提示;數據庫
二、根據收集到的監控指標數據;windows
三、分段排查便於快速定位問題。緩存
分析實例一:服務器
Error:Failed to connect to server "192.168.1.43:8080":[10060] connection網絡 Error:timed out Error:server"192.168.1.43"has shut down the connection prematurelyoracle |
A:應用服務死掉。性能
(小用戶時:程序上的問題。程序上處理數據庫的問題)測試
B:應用服務沒有死。
(應用服務參數設置的問題)
例:在許多客戶端鏈接weblogic應用服務器被拒絕,而在服務器端沒有錯誤顯示,則有多是weblogic中的server元素的acceptbacklog屬性值設置太低,若是鏈接時收到connection refused消息,說明應該提升該值,每次增長25%。
C:數據庫的鏈接
(一、在應用服務的性能參數可能設置的過小了。二、數據庫啓動的最大鏈接數(跟硬件和內存有關))。
分析實例二:
Error:Page download timeout(120 seconds) has expired |
A:可能應用服務參數設置太大致使服務器的瓶頸
B:多是在主頁面中圖片太多
C:在程序處理表的時候檢查字段太大太多
2、經常使用指標分析方法
一、內存
一、UNIX資源監控中指標內存頁交換速率(Paging rate),若是該值偶爾走高,代表當時有線程競爭內存。若是持續走高,則內存多是瓶頸,也多是內存訪問命中率低。
二、Windows 資源監控中,若是Process\Private Bytes計數器和Process\Working Set計數器的值在長時間內持續升高,同時Memory\Available bytes計數器的值持續下降,則極可能存在內存泄露。
瓶頸徵兆:
一、很高的換頁率(high pageout rate);
二、進程進入不活動狀態;
三、交換區全部磁盤的活動次數很高;
四、很高的全局系統CPU利用率;
五、內存不夠出錯(out of memory errors)。
二、CPU
一、UNIX資源監控(windows操做系統同理)中指標CPU佔用率(CPU utilization),若是該值持續超過95%,代表CPU是瓶頸。能夠考慮增長一個處理器或者換一個更快的處理器。若是服務器專用與sql server,可接受的最大上限是80-85%,合理使用範圍是60-70%。
二、windows資源監控中,若是System\Processor Queue Length 大於2,而處理器利用率(Processor Time)一直很低,則存在處理器阻塞。
瓶頸徵兆:
很慢的響應時間(slow response time)
CPU空閒時間爲零(zero percent idle CPU)
太高的系統佔用CPU時間(high percent system CPU)
太高的用戶佔用CPU時間(high ercent user CPU)
長時間的有很長的運行進程隊列(large run queue size sustained over time)
三、磁盤I/O
一、UNIX資源監控(windows操做系統同理)中指標磁盤交換率(Disk rate),若是該參數值一直很高,代表I/O有問題,能夠考慮更換更快的硬盤系統。
二、windows資源監控中,若是Disk Time和Avg.Disk Queue Length的值很高,而Page Reas/sec頁面讀取操做速率很低,則可能存在磁盤瓶頸。
瓶頸徵兆:
太高的磁盤利用率(high disk utilization)
太長的磁盤等待隊列(large disk queue length)
等待磁盤I/O的時間所佔的百分率過高(large percentage of time waiting for disk I/O)
過高的物理I/O速率:large physical I/O rate(not sufficient in itself)
太低的緩存命中率(low buffer cache hit ratio(not sufficient in itself))
太長的運行進程隊列,但CPU卻空閒(large run queue with idle CPU)
3、oracle數據庫
一、若是自由內存接近於0並且庫快存或數據字典快存的命中率小於0.90,那麼須要增長SHARED_POOL_SIZE的大小。
快存(共享SQL區)和數據字段快存的命中率:
select (sum(pins0reloads))/sum(pins) from v$librarycache;
select (sum(gets-getmisses-usage-fixed))/sum(gets) from v$rowcache;
自由內存:
select * from v$sgastat where name ='free memory';
二、若是數據庫的緩存命中率小於0.90,那麼須要加大DB_BLOCK_BUFFERS參數的值(單位:塊)。
緩存區高速緩存命中率:
select name,value from v$sysstat where name in ('db block gets','consistent gets'.'physical reads');
Hit Ratio=1-(physical reads/(db block gets+consistent gets))
三、若是日誌緩衝區申請的值較大,則應加大LOG_BUFFER參數的值。
日誌緩衝區的申請狀況:
select name,value from v$sysstat where name = 'redo log space requests';
四、若是內存排序命中率小於0.95,則應加大SORT_AREA_SIZE以免磁盤排序。
內存排序命中率:
select round((100*b.value)/decode((a.value+b.value),0,1,(a.value+b.value)),2) from v$sysstat a,v$sysstat b where a.name='sorts(disk)' and b.name='sorts (memory)'
SQL語句優化的目標
一、去掉沒必要要的大表全表掃描;
二、檢查優化索引的使用,這對於提升查詢速度來講很是重要;
三、檢查子查詢,考慮SQL子查詢是否能夠用簡單鏈接的方式進行從新書寫;
四、調整PCTFREE和PCTUSED等存儲參數優化插入、更新或者刪除等操做;
五、考慮數據庫的優化器;
六、在多個CPU的狀況下考慮並行查詢。
4、問題排查方法
查找瓶頸的難以程度,由易到難:
服務器硬件瓶頸->網絡瓶頸->應用瓶頸->服務器操做系統瓶頸(參數配置)->中間件瓶頸(參數配置,數據庫,web服務器等)。