性能測試分析

性能測試分析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服務器等)。

相關文章
相關標籤/搜索