視頻彙總地址:https://edu.51cto.com/lecturer/4626073.htmlhtml
46.LR啓動controller報錯「transaction monitor not available」web
1.可能是OS系統問題,修復試試或升級面試
2.或修復LR試試算法
47.Loadrunnber 報錯誤:Error -- memory violation : Exception ACCESS_VIOLATION received.的一種狀況數據庫
Posted on 2011-01-05 12:12蟈蟈俊 閱讀(433) 評論(0) 編輯收藏 windows
最近寫的一個Loadrunner腳本,最後一步是點擊「退出」按鈕退出登陸狀態,以下:api
web_text_link("[退出]",數組
"Snapshot=t18.inf",瀏覽器
DESCRIPTION,緩存
"Text=[退出]",
ACTION,
"UserAction=Click",
LAST);
return 0;
可是會報錯誤:
Action1.c(94): Error: C interpreter run time error: Action1.c (94): Error -- memory violation : Exception ACCESS_VIOLATION received.
Action1.c(94): Notify: CCI trace: Action1.c(94): web_text_link(0x02080870, 0x0208085f "Snapshot=t18.inf", 0x02080a42 "DESCRIPTION", 0x02080853, 0x02080a3b "ACTION", 0x020809de "UserAction=Click", 0x02080a6a "LAST")
Action1.c(94): Notify: CCI trace: Compiled_code(0): Action1()
通過試驗,發現是由於 退出後有個自動跳轉。
若是退出結束代碼修改成下面就沒有問題了。
web_text_link("[退出]",
"Snapshot=t18.inf",
DESCRIPTION,
"Text=[退出]",
ACTION,
"UserAction=Click",
LAST);
web_browser("Sync",
"Snapshot=t18.inf",
DESCRIPTION,
ACTION,
"Sync",
LAST);
return 0;
結論:
web_text_link若是有中間跳轉,不能放在代碼的最後,最後要有一個 Sync 。
48.Step download timeout(sec)設置
這個默認是120秒,可是常常咱們要設置的更大一些,具體設置方法:Vugen--》Vuser---》Runtime-settings----》Preferences------》option,將Step download timeout(sec)默認值120s改成本身須要的值,其次要改變HTTP-reguest connnect timeout(sec)和HTTP-reguest receive timeout(sec)也爲相應的值。
49.修改本機tcp鏈接數
由於我的pc機的默認的tcp鏈接數只有15個(xp),因此咱們在模擬虛擬多個用戶時,就會遇到tcp的鏈接限制,從而報錯。修改的方法:windows下運行 Patch.exe
輸入C,再輸入你要的TCP/IP鏈接數字(通常爲500~2000)回車確認
輸入Y 回車確認。
倒計時15秒後結束。
接着再運行下Patch.exe,看鏈接數是否是由原來的10變成本身改了的數值。
Patch.exe 下載地址:http://www.touchboy.cn/2007/05/% ... %E6%8E%A5%E6%95%B0/
50.關於Error -27791: Error -27790:Error -27740:錯誤的解決方法:
錯誤以下:
Action.c(198): Error -27791: Server "www.zcpx.cn" has shut down the connection prematurely
Action.c(198): Error -27790: Failed to read data from server "www.zcpx.cn": [10053] Software caused connection
abort
Action.c(198): Error -27740: Overlapped transmission of request to "www.zcpx.cn" for URL
"http://www.zcpx.cn/userEntry.do" failed: WSA_IO_PENDING
解決辦法:
在腳本的最前面加上web_set_sockets_option("OVERLAPPED","0");
51. LR中錯誤代號爲27796的一個解決方法
錯誤以下:
52.
1A:註冊表不能訪問或寫致使的,能夠恢復註冊表或卸載(清除註冊表,可使用工具)從新安裝程序。
要啓支LR自帶的實例的服務時,出錯了,提示:端口已經被另外一個服務佔用,請問一下能不能本身修改這個程序原來設定的端口啊?
2A:中止服務以後,在程序的安裝目錄\WebTours下找到xitami.cfg文件修改portbase值,注意 默認的端口號是portbase+80,portbase值是1000;要把端口號改爲8088,就把portbase改成8008,保存以後就是了(8088=8008+80)。而後重啓服務
二:LoadRunner面試(筆試)問題整理
1. 什麼是負載測試?什麼是性能測試?
負載測試是經過逐步增長系統負載,測試系統性能的變化,並最終肯定在知足性能指標的狀況下,系統所能承受的最大負載量的測試,例如,訪問一個頁面的響應時間規定不超過1秒,負載測試就是測試在響應時間爲1秒時,系統所能承受的最大併發訪問用戶的數量。
壓力測試一般是在高負載狀況下來對系統的穩定性進行測試,更有效地發現系統穩定性的隱患和系統在負載峯值的條件下功能隱患等。
性能測試:指在必定的約束條件下(指定的軟件、硬件、網絡環境等),肯定系統所能承受的最大負載壓力。
2. 性能測試包含了哪些測試(至少舉出3種)
性能測試包含負載測試、壓力測試、大數據量測試、疲勞強度測試等。
3. 簡述性能測試的步驟
第一,分析產品結構,明確性能測試的需求,包括併發、極限、配置和指標等方面的性能要求,必要時基於LOAD測試的相同測略需同時考慮穩定性測試的需求。
第二,分析應用場景和用戶數據,細分用戶行爲和相關的數據流,肯定測試點或測試接口,列示系統接口的可能瓶頸,通常是先主幹接口再支線接口,並完成初步的測試用例設計。
第三,依據性能測試需求和肯定的測試點進行測試組網設計,並明確不一樣組網方案的重要程度或優先級做爲取捨評估的依據,必要時在前期產品設計中提出支持性能測試的可測試性設計方案和對測試工具的需求。
第四,完成性能測試用例設計、分類選擇和依據用戶行爲分析設計測試規程,並準備好測試用例將用到的測試數據。
第五,肯定採用的測試工具。
第六,進行初驗測試,以主幹接口的可用性爲主,根據測試結果分析性能瓶頸,經過迭代保證基本的指標等測試的環境。
第七,迭代進行全面的性能測試,完成計劃中的性能測試用例的執行。
第八,完成性能測試評估報告。
在進行性能測試的時候,咱們須要知道一些有效的性能指標,下面咱們來列出一些主要的性能指標:
一是,通用指標(指Web應用服務器、數據庫服務器必需測試項):
*ProcessorTime:指服務器CPU佔用率,通常平均達到70%時,服務就接近飽和;
*Memory Available Mbyte:可用內存數,若是測試時發現內存有變化狀況也要注意,若是是內存泄露則比較嚴重;
*Physicsdisk Time :物理磁盤讀寫時間狀況。
二是,Web服務器指標:
*Avg Rps:平均每秒鐘響應次數=總請求時間/秒數;
*Avg time to last byte per terstion(mstes):平均每秒業務角本的迭代次數;*Successful Rounds:成功的請求;
*Failed Rounds:失敗的請求;
*Successful Hits:成功的點擊次數;
*Failed Hits:失敗的點擊次數;
*Hits Per Second:每秒點擊次數;
*Successful Hits Per Second:每秒成功的點擊次數;
*Failed Hits Per Second:每秒失敗的點擊次數;
*Attempted Connections:嘗試連接數。
三是,數據庫服務器指標:
*User 0 Connections :用戶鏈接數,也就是數據庫的鏈接數量;
*Number of deadlocks:數據庫死鎖;
*Butter Cache hit:數據庫Cache的命中狀況。
4. 簡述使用Loadrunner的步驟
A4:制定性能測試計劃—>開發測試腳本—>設計測試場景—>執行測試場景—>監控測試場景—>分析測試結果
5. 何時能夠開始執行性能測試?
功能測試經過;通常須要進行性能測試的系統,都是用戶量比較大、業務使用比較頻繁、比較重要的功能模塊。
6. LoadRunner由哪些部件組成?
A6:主要有三部分組成:
7. 你使用LoadRunner的哪一個部件來錄製腳本?
使用Virtual User Generator錄製測試腳本
8. LoadRunner的哪一個部件能夠模擬多用戶併發下回放腳本?
LoadRunner的Controller組件。
9. 什麼是集合點?設置集合點有什麼意義?Loadrunner中設置集合點的函數是哪一個?
在性能測試過程當中,須要模擬大量用戶在同一時刻,訪問系統並同時操做某一任務,能夠經過配置集合點來實現,多個用戶同時進行某操做;
集合點能夠在服務器上建立密集的用戶負載,使LoadRunner可以測試服務器在負載狀態下的性能。
設置集合點函數:lr_rendezvous("Meeting"); // Meeting是集合點名稱
10. 什麼是場景?場景的重要性有哪些?如何設置場景?
場景用於模擬用戶實際業務操做;
LoadRunner中場景有手工場景和麪向目標的場景。
設置場景:選擇場景類型、設置運行時設置、模擬用戶數、加減壓方式、持續時間,配置負載生成
1.選擇場景中須要的腳本
2.選擇爲目標場景,仍是指定的手工場景
3.設置用戶數、設置產生負載的設備
4.設置執行策略
11. 請解釋一下如何錄製web腳本?
LR經過轉發請求,來捕獲數據包,來造成腳本
解釋:1.基於瀏覽器的應用程序推薦使用HTML-based Script, 腳本中採用
HTML頁面的形式來表示,這種方式的Script腳本容易維護,容易理解,使用該選項中的advance中的第一個選項,若是單純的HTML方式,是不容許使用關聯的。
2.不是基於瀏覽器的應用程序推薦使用URL-based Script,腳本中的表示採用基於URL 的方式,不是很好閱讀。
解釋:1.是否記錄錄製過程當中的ThinkTime,若是記錄,還能夠設置最大值,通常我不記錄這個值。
2.通知Vugen去從新設置每一個action之間的Http context,缺省是須要的。
3.完整記錄錄製過程的log,
4.保存一個本地的snapshot,能夠加速顯示
5.把html的title放到web_reg_find函數裏面
6.支持的字符集標準
7.Http header的錄製,咱們採用缺省便可,不須要用web_add_header去錄製非標準的header信息。
對錄製的content的內容進行filter,不做爲resource處理的。
解釋:這個就是我前面提到的關聯,系統已經預先設置好了一些常見的關聯rules,咱們錄製腳本以前,能夠把系統的
12. 爲何要建立參數?如何建立參數?
參數:在環境變化時必須時腳本具備環境變化的能力,就須要參數化(客戶端發送到服務器端)
1.肯定要參數話的數據
2.設定規則形式來取值
13. 什麼是關聯?請解釋一下自動關聯和手動關聯的不一樣。
關聯:不少構架用sessionid等方法標識不一樣任務和數據,應用在每次運行時方式發送數據不徹底相同,須要利用的機制對錄製的腳本進行處理,這種機制叫作關聯(服務端發送到客戶端)
14. 場景設置有哪幾種方法?
目標場景,手工場景
15. 你如何找出哪裏須要關聯?請給一些你所在項目的實例。
用戶登錄,
客戶端發送請求後,服務端驗證正確性後,發送給客戶端sessionid,是某種規則產生。
16. 你在哪裏設置自動關聯選項?
兩地方能夠設置
1.設置容許錄製時進行自動關聯,能夠自定義規則
2.錄製完成後,vuser-scan action for correlations
17. 哪一個函數是用來截取虛擬用戶腳本中的動態值?(手工關聯)
web_reg_save_param()函數主要根據須要作關聯的動態數據前面和後面的固定字符串來識別、提取動態數據,因此在作關聯時,須要找出動態數據的左、右邊界字符串。
18. 你在VUGen中什麼時候選擇關閉日誌?什麼時候選擇標準和擴展日誌?
Run-time,log,
當調試腳本時,能夠只輸出錯誤日誌,當在場景找你管加載腳本時,日誌自動變爲不可用。
Standard Log Option:選擇標準日誌時,就會在腳本執行過程當中,生成函數的標準日誌而且輸出信息,供調試用。大型負載測試場景不用啓用這個選項。
擴展日誌包括警告和其餘信息。大型負載測試不要啓用該選項。用擴展日誌選項,能夠指定哪些附加信息須要加到擴展日誌中
19. 你如何調試LoadRunner腳本?
VuGen有兩個選項幫助調試Vuser腳本。Run Step by Step命令和斷點(breakpoints)。Option對話框中的調試設置(Debug setting)項,能夠肯定在場景執行過程當中執行軌跡範圍。調試信息寫在output窗口。能夠用
lr_set_debug_messag函數在腳本中手工設置信息類型。若是咱們只想接收到一小段腳本的調式信息。
20. 你在LR中如何編寫自定義函數?請給出一些你在之前進行的項目中編寫的函數。
在建立用戶自定義函數前咱們須要和建立DLL(external libary)。把庫放在VuGen bin目錄下。一旦加了庫,把自定義函數分配作一個參數。該函數應該具備一下格式:__declspec (dllexport) char* (char*, char*)。
Milan
21. 什麼是逐步遞增?你如何來設置?
Ramp up這個選項用於逐漸增長服務器的虛擬用戶數或負載量。設置一個初始值並且能夠在兩個迭代之間設置一個值等待。設置Ramp up,請到‘Scenario Scheduling Options’。
22. 以線程方式運行的虛擬用戶有哪些優勢?
VuGen提供了用多線程的便利。這使得在每一個生成器上能夠跑更多的虛擬用戶。若是是以進程的方式跑虛擬用戶,爲每一個用戶加載相同的驅動程序到內存中,所以佔用了大量的內存。這就限制了在單個生成器上能跑的虛擬用戶數。若是按線程運行,給定的全部虛擬用戶數(好比100)只是加載一個驅動程序實例到內存裏。每一個線程共用父驅動程序的內存,所以在每一個生成器上能夠跑更多的虛擬用戶。
23. 當你須要在出錯時中止執行腳本,你怎麼作?
lr_abort函數放棄虛擬用戶腳本的執行。說明虛擬用戶中止Action的執行,直接執行vuser_end而後結束執行。在出現錯誤狀況下想手工放棄腳本的執行,這個函數是有用的。用這個函數中止腳本時,Vuser被指定爲「Stopped」狀態。爲了這個函數起做用,開始時候就不能選擇Run-Time Settings中的Continue on error選項。
24. 響應時間和吞吐量之間的關係是什麼?
吞吐量圖顯示的是虛擬用戶每秒鐘從服務器接收到的字節數。當和響應時間比較時,能夠發現隨着吞吐量的下降,響應時間也下降,一樣的,吞吐量的峯值和最大響應時間差很少在同時出現。
25. 說明一下如何在LR中配置系統計數器?
經過Web資源監視器,利用這些監控器能夠分析web服務器的吞吐量、點擊率、每秒http響應數以及每秒下載的頁面數。
26. 什麼是think time?think_time有什麼用?
思考時間是真實用戶在action之間等待的時間。例如:當一個用戶從服務器接收到數據時,用戶可能須要在響應以前等待幾分鐘回顧數據,這種推遲被稱爲思考時間。
27. 標準日誌和擴展日誌的區別是什麼?
Standard Log Option:選擇標準日誌時,就會在腳本執行過程當中,生成函數的標準日誌而且輸出信息,供調試用。大型負載測試場景不用啓用這個選項。
擴展日誌包括警告和其餘信息。大型負載測試不要啓用該選項。用擴展日誌選項,能夠指定哪些附加信息須要加到擴展日誌中
28. 解釋如下函數及他們的不一樣之處。
Lr_debug_message
lr_debug_message 函數在指定的消息級別
// 處於活動狀態時發送一條調試消息。若是指定的
// 消息級別未處於活動狀態,則不發出消息。
Lr_output_message
要發送不是特定錯誤消息的特殊通知,
Lr_error_message
函數將錯誤消息發送到
// 輸出窗口和 Vuser日誌文件
Lrd_stmt lrd_exec 函數執行 lrd_stmt設置的 SQL 語句。
Lrd_fetch 函數從結果集中提取後續若干行
result set.
函數準備用於
// 經過光標輸出字符串(一般爲 SQL語句)
// 的下一結果集。對於 CtLib,它發出 ct_result
// 命令,而且在 ODBC中它運行用於當前數據庫
29. 什麼是吞吐量?
單位時間內系統處理客戶端的請求數。
30. action和init、end除了迭代的區別還有其餘嗎?
在init、end中不能使用集合點、事務等, init、end只執行一次。
31. 在什麼地方設置HTTP頁面filter?
在runtime_settings中download filter裏面進行設置。
32. pot mapping的原理是什麼?
就是代理服務器
33. HTTP的超時有哪三種?
HTTP-request connect timeout、HTTP-request receive timeout、step download timeout
34. 什麼是contentcheck?如何來用?
ContentCheck的設置是爲了讓VuGen檢測何種頁面爲錯誤頁面。若是被測的Web 應用沒有使用自定義的錯誤頁面,那麼這裏不用做更改;若是被測的Web應用使用了自定義的錯誤頁面,那麼這裏須要定義,以便讓VuGen 在運行過程當中檢測,服務器返回的頁面是否包含預約義的字符串,進而判斷該頁面是否爲錯誤頁
面。若是是,VuGen就中止運行,指示運行失敗。
使用方法:點擊在runtime settings中點擊「contentcheck」,而後新創建一個符合要求的應用程序和規則,設定須要查找的文本和前綴後綴便可使用。
35. network中的speed simulation是模擬的什麼帶寬?
模擬用戶訪問速度的帶寬。
36. 生成WEB性能圖有什麼意義?大概描述便可。
能夠很直觀的看到,在負載下系統的運行狀況以及各類資源的使用狀況,能夠對系統的性能瓶頸定位、性能調優等起到想要的輔助做用。
37. 若是刷新controller裏的腳本?
在controller中,點擊detailis-Refresh-script便可。
38. 進程和線程有什麼區別?
線程有本身的全局數據。線程存在於進程中,所以一個進程的全局變量由全部的線程共享。因爲線程共享一樣的系統區域,操做系統分配給一個進程的資源對該進程的全部線程都是可用的,正如全局數據可供全部線程使用同樣。在Controller中將使用驅動程序(如mdrv.exe、r3vuser.exe)運行vuser。若是按進程運行每一個vuser,則對於每一個vuser實例,都將反覆啓動同一驅動程序並將其加載到內存中。將同一驅動程序加載到內存中會佔用大量的RAM(隨機存儲器)及其餘系統資源。這就限制了能夠在任一負載生成器上運行的vuser數量。若是按線程運行每一個vuser,Controller爲每50個vuser(默認狀況下)僅啓動驅動程序(如mdrv.exe)的一個實例。該驅動程序將啓動幾個vuser,每一個vuser都按線程運行。這些線程vuser將共享父驅動進程的內存段。這就消除了屢次從新加載驅動程序/進程的須要,節省了大量內存空間,從而能夠在一個負載生成器上運行更多的Vuser.
39. 如何把腳本和結果放到load generator的機器上?
在controller中,點擊Results-Results settings,在裏面進行相應的設置便可。
40. 如何設置才能讓集合點只對一半的用戶生效?
對集合點策略進行相應的設置便可。即在controller中,點擊Scenario-Rendezvous-policy進行相應的設置便可,因爲題目中「一半的用戶」沒有說明白具體指什麼樣的用戶,如今很差肯定具體對裏面的哪一個選項進行設置。
41. LRd的API分爲幾類
A:通用的API:,就是跟具體的協議無關,在任何協議的腳本里都能用的;
B:針對協議的:像lrs前綴是winsock的;lrd的是針對database;
C:自定義的:這個範圍就比較廣了;好比至少有Java Vuser API、lrapi、XML API。還能夠添加WindowsAPI和自定義函數庫。
42. LR幾種日誌函數的區別?
【lr_message】 int lr_message (const char *format, exp1, exp2,…expn.);中文解釋:lr_message函數將信息發送到日誌文件和輸入窗口。在VuGen中運行時,輸入文件爲output.txt。
【lr_log_message】 int lr_log_message (const char *format, exp1, exp2,…expn.);中文解釋:lr_log_message函數將消息發送到Vuser或代理日誌文件(取決於應用程序),而不是發送到輸出窗口。經過向日志文件發送錯誤消息或其餘信息性消息,能夠將該函數用於調試。 【lr_error_message】 int lr_error_message (const char *format, exp1, exp2,…expn. );中文解釋:lr_error_message函數將錯誤消息發送到輸出窗口和Vuser日誌文件。要發送不是特定錯誤消息的特殊通知,請使用lr_output_message。
【lr_output_message】 int lr_output_message (const char *format, exp1, exp2,…expn.);中文解釋:lr_output_message函數將帶有腳本部分的行號的消息發送到輸出窗口和日誌文件。
【lr_debug_message函數組】 int lr_debug_message (unsigned int message_level, const char *format, … );中文解釋:lr_debug_message函數在指定的消息級別處於活動狀態時發送一條調試信息。若是指定的消息級別未出於活動狀態,則不發送消息。您能夠從用戶界面或者使用lr_set_debug_message,將處於活動狀態的消息級別設置爲MSG_CLASS_BRIEF_LOG或MSG_CLASSS_EXTENDED_LOG。要肯定當前級別,
請使用lr_get_debug_message。 unsigned int lr_get_debug_message ( );中文解釋:lr_get_debug_message函數返回當前的日誌運行時設置。該設置肯定發送到輸出端的信息。日誌設置是使用運行時設置對話框或經過使用lr_set_debug_message函數指定的。 int lr_set_debug_message (unsigned int message_level, unsigned int on_off); 中文解釋:lr_set_debug_message函數設置腳本執行的調試消息級別message_lvl。經過設置消息級別,能夠肯定發送哪些信息。啓動設置的方法是將LR_SWITCH_ON做爲on_off傳遞,禁用設置的方法是傳遞LR_SWITCH_OFF。
【lrd_stmt】:將SQL語句與光標關聯
【lrd_fetch】:提取結果集中得下一條記錄
43. 性能瓶頸分析方法?
同一場景
1.小用戶量的狀況下測試
2.大用戶量狀況下的測試
分析的方法:
整個系統架構分析,系統響應時間消耗,利用圖表分析
查看事務響應時間,經過事務摘要圖分析事務響應時間,那個消耗最大(經過小用戶量和大用戶量的響應時間分析,查看那個事務響應時間最高),肯定哪部分功能是性能的瓶頸,分析window resource圖表,查看cpu
使用下列計數器標識cpu瓶頸
Processor\ Interrupts/sec
Processor\ % Processor Time
Process(process)\ % Processor Time
System\ Processor Queue Length
經過它來肯定是否硬件自己出現瓶頸,或者進一步肯定應該怎麼去判斷性能產生瓶頸的地方!
下一步去判斷進程,那個進程消耗cpu最高
下邊就有不少種狀況須要你本身去判斷,有多是進程調用了的函數消耗了系統資源造成上邊的問題,也有多是後臺數據庫出現的問題(這個就要看你的系統配置是什麼樣的,好比你的db服務器和應用服務器都配置在一臺機器上)
性能產生瓶頸有不少地方,因此須要進一判斷,是不是後臺數據庫的問題還有待分析,是那條語句致使的問題須要進一步分析判斷。
分析原則:
具體問題具體分析(這是因爲不一樣的應用系統,不一樣的測試目的,不一樣的性能關注點)
查找瓶頸時按如下順序,由易到難。
服務器硬件瓶頸-〉網絡瓶頸(對局域網,能夠不考慮)-〉服務器操做系統瓶頸(參數配置)-〉中間件瓶頸(參數配置,數據庫,web服務器等)-〉應用瓶頸(SQL語句、數據庫設計、業務邏輯、算法等)
注:以上過程並非每一個分析中都須要的,要根據測試目的和要求來肯定分析的深度。對一些要求低的,咱們分析到應用系統在未來大的負載壓力(併發用戶數、數據量)下,系統的硬件瓶頸在哪兒就夠了。
分段排除法頗有效
分析的信息來源:
1 根據場景運行過程當中的錯誤提示信息
2 根據測試結果收集到的監控指標數據
一.錯誤提示分析
分析實例:
1 Error: Failed to connect to server 「10.10.10.30:8080″: [10060] Connection
Error: timed out Error: Server 「10.10.10.30″ has shut down the connection prematurely
分析:
A、應用服務死掉。
(小用戶時:程序上的問題。程序上處理數據庫的問題)
B、應用服務沒有死
(應用服務參數設置問題)
例:在許多客戶端鏈接Weblogic應用服務器被拒絕,而在服務器端沒有錯誤顯示,則有多是Weblogic中的server元素的 AcceptBacklog屬性值設得太低。若是鏈接時收到connection refused消息,說明應提升該值,每次增長25%
C、數據庫的鏈接
(一、在應用服務的性能參數可能過小了 二、數據庫啓動的最大鏈接數(跟硬件的內存有關))
2 Error: Page download timeout (120 seconds) has expired
分析:多是如下緣由形成
A、應用服務參數設置太大致使服務器的瓶頸
B、頁面中圖片太多
C、在程序處理表的時候檢查字段太大多
二.監控指標數據分析
1.最大併發用戶數:
應用系統在當前環境(硬件環境、網絡環境、軟件環境(參數配置))下能承受的最大併發用戶數。
在方案運行中,若是出現了大於3個用戶的業務操做失敗,或出現了服務器shutdown的狀況,則說明在當前環境下,系統承受不了當前併發用戶的負載壓力,那麼最大併發用戶數就是前一個沒有出現這種現象的併發用戶數。
若是測得的最大併發用戶數到達了性能要求,且各服務器資源狀況良好,業務操做響應時間也達到了用戶要求,那麼OK。不然,再根據各服務器的資源狀況和業務操做響應時間進一步分析緣由所在。
2.業務操做響應時間:
分析方案運行狀況應從平均事務響應時間圖和事務性能摘要圖開始。使用「事務性能摘要」圖,能夠肯定在方案執行期間響應時間過長的事務。
細分事務並分析每一個頁面組件的性能。查看過長的事務響應時間是由哪些頁面組件引發的?問題是否與網絡或服務器有關?
若是服務器耗時過長,請使用相應的服務器圖肯定有問題的服務器度量並查明服務器性能降低的緣由。若是網絡耗時過長,請使用「網絡監視器」圖肯定致使性能瓶頸的網絡問題
3.服務器資源監控指標:
內存:
1 UNIX資源監控中指標內存頁交換速率(Paging rate),若是該值偶爾走高,代表當時有線程競爭內存。若是持續很高,則內存多是瓶頸。也多是內存訪問命中率低。
2 Windows資源監控中,若是Process\Private Bytes計數器和Process\Working Set計數器的值在長時間內持續升高,同時Memory\Available bytes計數器的值持續下降,則極可能存在內存泄漏。
內存資源成爲系統性能的瓶頸的徵兆:
很高的換頁率(high pageout rate);
進程進入不活動狀態;
交換區全部磁盤的活動次數可高;
可高的全局系統CPU利用率;
內存不夠出錯(out of memory errors)
處理器:
1 UNIX資源監控(Windows操做系統同理)中指標CPU佔用率(CPU utilization),若是該值持續超過95%,代表瓶頸是CPU。能夠考慮增長一個處理器或換一個更快的處理器。若是服務器專用於SQL Server,可接受的最大上限是80-85%
合理使用的範圍在60%至70%。
2 Windows資源監控中,若是System\Processor Queue Length大於2,而處理器利用率(Processor Time)一直很低,則存在着處理器阻塞。
CPU資源成爲系統性能的瓶頸的徵兆:
很慢的響應時間(slow response time)
CPU空閒時間爲零(zero percent idle CPU)
太高的用戶佔用CPU時間(high percent user CPU)
太高的系統佔用CPU時間(high percent system CPU)
長時間的有很長的運行進程隊列(large run queue size sustained over time)
磁盤I/O:
1 UNIX資源監控(Windows操做系統同理)中指標磁盤交換率(Disk rate),若是該參數值一直很高,代表I/O有問題。可考慮更換更快的硬盤系統。
2 Windows資源監控中,若是 Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec頁面讀取操做速率很低,則可能存在磁盤瓶徑。
I/O資源成爲系統性能的瓶頸的徵兆 :
太高的磁盤利用率(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)
4.數據庫服務器:
SQL Server數據庫:
1 SQLServer資源監控中指標緩存點擊率(Cache Hit Ratio),該值越高越好。若是持續低於80%,應考慮增長內存。
2 若是Full Scans/sec(全表掃描/秒)計數器顯示的值比1或2高,則應分析你的查詢以肯定是否確實須要全表掃描,以及SQL查詢是否能夠被優化。
3 Number of Deadlocks/sec(死鎖的數量/秒):死鎖對應用程序的可伸縮性很是有害,而且會致使惡劣的用戶體驗。該計數器的值必須爲0。
4 Lock Requests/sec(鎖請求/秒),經過優化查詢來減小讀取次數,能夠減小該計數器的值。
Oracle數據庫:
1 若是自由內存接近於0並且庫快存或數據字典快存的命中率小於0.90,那麼須要增長SHARED_POOL_SIZE的大小。
快存(共享SQL區)和數據字典快存的命中率:
select(sum(pins-reloads))/sum(pins) from v$librarycache;
select(sum(gets-getmisses))/sum(gets) from v$rowcache;
自由內存 select * from v$sgastat where name=’free memory’;
2 若是數據的緩存命中率小於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))
3 若是日誌緩衝區申請的值較大,則應加大LOG_BUFFER參數的值。
日誌緩衝區的申請狀況:
select name,value from v$sysstat where name = ‘redo log space requests’ ;
4 若是內存排序命中率小於0.95,則應加大SORT_AREA_SIZE以免磁盤排序。