1.去掉ie設置中的第三方支持取消掉html
2.在系統屬性-高級-性能-數據執行保護中,添加loadrunner安裝目錄中的vugen.exe文件.node
有多是因爲錄製的URL地址採用的是localhost的問題,改爲分配的IP地址或127.0.0.1試試。web
三、插入文本檢查點步驟時,使用web_reg_find,一般TextPfx和TextSfx中會包含雙引號,須要進行轉義(用斜槓),例如:面試
web_reg_find("Search=Body",ajax
"SaveCount=Welcome",算法
"TextPfx=歡迎<a class=\"drop\" id=\"viewpro\" onMouseOver=\"showMenu(this.id)\">",sql
"TextSfx=</a>",數據庫
LAST)windows
遇到flight界面爲空的解決的可能方法: 一、若是安裝了IE之外的瀏覽器,而且IE不是默認瀏覽器,則沒法生成錄製腳本 二、若是錄製腳本時IE不能打開,則須要將瀏覽器的IE工具高級選項中,將「啓用第三方瀏覽器擴展」的勾選去掉 三、lr自帶的webtours系統,若是點擊Flights選項,出現空白頁面,請檢查本機oracle的 PERL5LIB環境api
當一臺主機上安裝多個瀏覽器時,LoadRunner錄製腳本常常遇到不能打開瀏覽器的狀況,能夠用下面的方法來解決。
啓動瀏覽器,打開Internet選項對話框,切換到高級標籤,去掉「啓用第三方瀏覽器擴展(須要重啓動)」的勾選,而後再次運行VuGen便可解決問題
提示:一般安裝Firefox等瀏覽器後,都會勾選上面得選項,致使不能正常錄製。所以建議運行LoadRunner得主機上保持一個乾淨的測試環境。
使用「HTML-based script」的模式錄製腳本,VuGen爲用戶的每一個HTML操做生成單獨的步驟,這種腳本看上去比較直觀;
使用「URL-based script」模式錄製腳本時,VuGen能夠捕獲全部做爲用戶操做結果而發送到服務器的HTTP請求,而後爲用戶的每一個請求分別生成對應方法。
一般,基於瀏覽器的Web應用會使用「HTML-based script」模式來錄製腳本;而沒有基於瀏覽器的Web應用、Web應用中包含了與服務器進行交互的Java Applet、基於瀏覽器的應用中包含了向服務器進行通訊的JavaScript/VBScript代碼、基於瀏覽器的應用中使用了HTTPS安全協議,這時使用「URL-based script」模式進行錄製。
Pacing主要用來設置重複迭代腳本的間隔時間。共有三種方法:A:上次迭代結束後馬上開始、 B:上次迭代結束後等待固定時間、C:按固定或隨機的時間間隔開始執行新的迭代。
根據實際須要設置迭代便可。一般,沒有時間間隔會產生更大的壓力。
Enable logging選項僅影響自動日誌記錄和經過lr_log_message發送的消息。即便沒有勾選,虛擬用戶腳本中若是使用lr_message、lr_output_message、lr_error_message,仍然會記錄其發出的消息。
不支持。目前的VuGen 8.0版本中僅支持Internet Explorer的客戶端證書。錄製腳本時能夠先從Netscape中導出所需的證書,而後將其導入到Internet Explorer中,並確保以相同的順序導出和導入這些證書。並且,在每臺將要錄製或運行須要證書的Web Vuser腳本的計算機上都要重複執行前面的過程。
會修改。在開始錄製基於瀏覽器的Web Vuser腳本時,VuGen首先會啓動指定的瀏覽器。而後,VuGen會指示瀏覽器訪問VuGen代理服務器。爲此,VuGen會修改錄製瀏覽器上的代理服務器設置。默認狀況下,VuGen會當即將代理服務器設置更改成Localhost:7777。錄製以後,VuGen會將原始代理服務器設置還原到該錄製瀏覽器中。所以,在VuGen進行錄製的過程當中,不能夠更改代理服務器設置,不然將沒法正常進行。
LoadRunner提供了char *ctime(const time_t *time)函數,調用參數爲一個Long型的整數指針,用於存放返回時間的數值表示。
調用語句與返回值以下示例:
typedef long time_t;
Action()
{
time_t t;
lr_message(「Time in seconds since 1/1/70: %ld\n」,time(&t));
lr_message(「System time and date: %s」,ctime(&t));
}
輸出結果爲:
Time in seconds since 1/1/70: 1185329968
System time and date:Wed Jul 25 10:19:28 2007
這種現象可能是因爲在「Run-time Setting」的「Browse Emulation」的設置中,勾選了「Simulate a new user on each iteration」及其下面的選項「Clear cache on each iteration」這兩個選項的含義是每次迭代時模擬一個新的用戶及每次迭代時清除緩存。
因爲腳本迭代時,init和end只能執行一次,若是每次迭代都模擬一個新的用戶並清除緩存,則用戶登陸信息將一併清除,所以迭代時可能會發生錯誤。
若是選擇「Run Vuser as a process」,則場景運行時會爲每個虛擬用戶建立一個進程;選擇「Run Vuser as a thread」則將每一個虛擬用戶做爲一個線程來運行,在任務管理器中只看到一個mmdrv.exe,這種方式的運行效率更高,能形成更大的壓力,時默認選項。
另外,若是啓用了IP欺騙功能,則先在Controller中選中Tools菜單下的「Expert Mode」,而後將Tools菜單下的「Options>General」標籤頁中的IP地址分配方式也設置爲與Vuser運行方式一致,同爲線程或進程方式。
這主要有腳本的默認超時設置引發。當回放Web腳本時,有時候因爲服務器響應時間較長,會產生超時的錯誤。這時須要修改腳本的運行時配置。
進入「Run-time Setting」對話框後,依次進入「Internet Protocol→Preference」。而後點擊「Options…」按鈕,進入高級設置對話框,能夠修改各種超時設置的默認值。
在Windows計算機的標準設置下,操做系統的默認限制只能使用幾百個Vuser,這個限制與CPU或內存無關,主要是操做系統自己規定了默認的最大線程數所致使。要想突破Windows這個限制,須修改Windows註冊表。以Windows XP Professional爲例。
(1)打開註冊表後,進入註冊表項HKEY_LOCAL_MACHINE中的下列關鍵字:System\CurrentControlSet\Control\Session Manager\SubSystems。
(2)找到Windows關鍵字,Windows關鍵字以下所示:
%SystemRoot%\system32\csrss.exe bjectDirectory=\Windows
SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1
ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2
ProfileControl=Off MaxRequestThreads=16
SharedSection=1024,3072,512關鍵字的格式爲xxxx,yyyy,zzz。其中,xxxx定義了系統範圍堆的最大值(以KB爲單位),yyyy定義每一個桌面堆得大小。
(3)將yyyy的設置從3072更改成8192(即8MB),增長SharedSection參數值。
經過對註冊表的更改,系統將容許運行更多的線程,於是能夠在計算機上運行更多的Vuser。這意味着可以模擬的最大併發用戶數量將不受Windows操做系統的限制,而只受硬件和內部可伸縮性限制的約束。
loadruner報錯:Error -27728: Step download timeout (120 seconds) 如何解決語法檢查經過,可是在併發執行一個查詢時候報錯Action.c(16): Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s), 請問有啥子解決方法,我使用web_set_timeout ,好象不起做用,直接在option中設置timeout時間爲600,(單位應該是秒吧)仍是沒有起做用,結果都仍是提示(120seconds),說明仍是以120秒來判斷的;使用lrs_set_recv_timeout,語法檢查不過,說明庫函數裏面沒有這個函數。嘗試步驟:設置超時時間到600秒,回放仍是出錯。後來我設置了runt time setting中的internet protocol-preferences中的advaced區域有一個winlnet replay instead of sockets選項,選項後再回放就成功了。
首先LR是經過Microsoft WinInet DLL去錄製web協議的!可是在Control運行的時候它默認經過socket去模擬請求,由於這些能夠真實的模擬帶寬,而採用Microsoft WinInet DLL經過這個DLL去訪問網卡方式去模擬帶寬,使得模擬不是很精確!並且也不支持unix的應用,可是使用這個確實有時沒法處理winnet Dll的一些請求,我認爲是它的一些BUG,好比說:回放時它會檢查Content-Length,可是網頁支持receive more data時,這時socket模擬會一直等待直到timeout!先說了一些優缺點,最後回到這個問題!這個問題分兩個方面分析:
第一:你要明白web_set_timeout()這個函數的適用範圍!好比說一個web_submit_data()中實際涵蓋了10個對Server 端的請求,這個函數是針對10個請求的總和時間的!(別犯低級錯誤,timeout分了connect,receive以及download三個部分:) ) 第二:就是我解釋的上面的一些BUG問題!WinInet dll在新版本中處理請求時能夠異步的,就是再也不是那種鏈接等待而後超時模式!可是LR用的socket是同步請求!只有等到timeout纔會退出!microsoft已經明確表示INTERNET_OPTION_RECEIVE_TIMEOUT 再也不適用於 Microsoft Internet Explorer 5.0,顯而易見,他們處理請求採起了異步處理的方式!呵呵!這下大概能夠圓滿解釋你的問題了!呵呵這裏,
我補充以下:VuGen專用的基於套接字的重播是一種可伸縮以便進行負載測試的輕型引擎。使用線程時是準確的。基於套接字的引擎不支持socks代理服務器。若是在這樣的環境中錄製,應該使用winInet重播引擎。
(1)編寫SQL語句來插入數據
(2)使用DataFactory等專業的數據生成工具
(3)經過LoadRunner錄製回放的方式重複執行生成大批量數據
Tips:
使用DataFactory插入nchar數據類型的數據時會出現空值的狀況,能夠先修改數據庫的數據類型設置,插完數據後再改回來
把錄製選項中的Support charset選中UTF-8
錄製腳本後,切換到樹視圖中,打開相應的腳本頁面。在右側的PageView中錄製的腳本呈現中文版式,可是當切換到Server Response中,全部的中文所有換成的亂碼,如「勌縗仫訆」。
緣由是服務器端沒有把響應的編碼設置爲gb2312
在IIS中找到Web.Config文件,在<system.web>….</system.web>節加入<globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/>後再次錄製腳本,亂碼變中文。
解決辦法(1):
首先設置Run-Time Settings – Browser – Browser Emulation – User-Agent
而後設置IE:
查看-編碼-鉤上「自動選擇」和Unicode(UTF-8)。
解決辦法(2):
使用lr_convert_string_encoding函數來轉換編碼
下面是一個使用的例子:
lr_convert_string_encoding(lr_eval_string("{ReplyContents}"),LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"ReplyMessage");
web_submit_data("postreply.aspx_2",
"Action=http://127.0.0.1/postreply.aspx?infloat=1&topicid=2&&inajax=1",
"Method=POST",
"EncType=multipart/form-data",
"RecContentType=text/xml",
"Referer=http://127.0.0.1/showtopic-2.aspx",
"Snapshot=t9.inf",
"Mode=HTML",
ITEMDATA,
"Name=iconid", "Value=0", ENDITEM,
"Name=title", "Value=", ENDITEM,
"Name=wysiwyg", "Value=0", ENDITEM,
"Name=checkbox", "Value=0", ENDITEM,
"Name=message", "Value=[localimg=180,112]1[/localimg]\r\n\r\n{ReplyMessage}", ENDITEM,
"Name=e_mediatyperadio", "Value=on", ENDITEM,
"Name=sl_attachdesc", "Value=", ENDITEM,
"Name=attachid", "Value=", ENDITEM,
"Name=attachdesc", "Value=", ENDITEM,
"Name=localid", "Value=", ENDITEM,
"Name=attachdesc", "Value=", ENDITEM,
"Name=localid", "Value=1", ENDITEM,
"Name=attachdesc", "Value=", ENDITEM,
"Name=localid", "Value=2", ENDITEM,
"Name=emailnotify", "Value=on", ENDITEM,
"Name=postreplynotice", "Value=on", ENDITEM,
"Name=postfile", "Value=", "File=Yes", ENDITEM,
"Name=postfile", "Value=D:\\\\圖片收集\\\\It's about time.JPG", "File=Yes", ENDITEM,
"Name=postfile", "Value=", "File=Yes", ENDITEM,
"Name=uploadallowmax", "Value=10", ENDITEM,
"Name=uploadallowtype", "Value=jpg,gif", ENDITEM,
"Name=thumbwidth", "Value=300", ENDITEM,
"Name=thumbheight", "Value=250", ENDITEM,
"Name=noinsert", "Value=0", ENDITEM,
LAST);
The parameter file is stored in the script directory as .dat file extension. It can be opened with a simple text editor like Notepad as it is stored in pure text format. Therefore, you can manipulate the files via the Notepad. You can also use office applications such as Microsoft Excel or OpenOffice.org Calc to work on the file. This greatly the amount of work required for maintaining a long list of data.
After upgrading to LoadRunner 9.x I started getting a window popup which said "Failed to connect to server" every time I opened virtual user generator (vugen.exe).
The solution to this was to close virtual user generator and delete the [vugen.ini] file.
vugen.ini is found in the %systemroot% folder on your Windows PC (usually C:\WINDOWS or C:\WINNT).
Once you've deleted the file, virtual user generator will open without any issues and create a new vugen.ini file automatically.
怎樣抓取有相同左右邊界的動態value?例如:
stateID="d7lg0ehmjkkm6uin3s4boei7oq">
stateID="cvopakp46ftsf8mh6l37ti3ubm">
stateID="bv9mja8gtgr39ddibm5t9163re">
web_reg_save_param裏的ORD應該怎樣設置?
ORD: Indicates the ordinal position or instance of the match. The default instance is 1. If you specify "All," it saves the parameter values in an array.
例子:
char outFlightParam[50]; // The name of the parameter for correlation
char outFlightParamVal[50]; // The formatted value of outFlightParam
web_reg_save_param("outFlightVal",
"LB=outboundFlight value=", "RB=>",
"ORD=ALL",
"SaveLen=18",
LAST);
web_submit_form("reservations.pl",
"Snapshot=t4.inf",
ITEMDATA,
"Name=depart", "Value=London", ENDITEM,
"Name=departDate", "Value=11/20/2003", ENDITEM,
"Name=arrive", "Value=New York", ENDITEM,
"Name=returnDate", "Value=11/21/2003", ENDITEM,
"Name=numPassengers", "Value=1", ENDITEM,
"Name=roundtrip", "Value=<OFF>", ENDITEM,
"Name=seatPref", "Value=None", ENDITEM,
"Name=seatType", "Value=Coach", ENDITEM,
"Name=findFlights.x", "Value=83", ENDITEM,
"Name=findFlights.y", "Value=16", ENDITEM,
LAST);
sprintf(outFlightParam, "{outFlightVal_%s}",
lr_eval_string("{outFlightVal_count}"));
sprintf(outFlightParamVal, "Value=%s",
lr_eval_string(outFlightParam));
lr_message("The value argument is : %s", outFlightParamVal);
web_submit_form("reservations.pl_2",
"Snapshot=t5.inf",
ITEMDATA,
"Name=outboundFlight",outFlightParamVal, ENDITEM,
"Name=reserveFlights.x", "Value=92", ENDITEM,
"Name=reserveFlights.y", "Value=10", ENDITEM,
LAST);
vuser_init.c(12): Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s)(出現個別,能夠忽略)
vuser_init.c(12): Error -27727: Step download timeout (120 seconds) has expired when downloading resource(s). Set the "Step Timeout caused by resources is a warning" Run-Time Setting to Yes/No to have this message as a warning/error, respectively
vuser_init.c(12): Error -27796
若是以爲下載一個頁面超過2分鐘不是錯誤的話,能夠在Run-Time設置中選擇Preferences->Options,修改Step download timeout(sec)的時間
或者把「Step timeout caused by resources is a warning」設置爲Yes,這樣下載資源超時也只是做爲警告,不做爲錯誤提示,可是對於非資源的下載超時,則老是會提示錯誤的
須要在loadrunner裏面得到「15」(下面紅色高亮的部分),並作成關聯參數。
//Body response 內容: <BODY><; PRE>//OK[8,7,5,15,6,5,0,4,0,3,0,3,2,0,0,0,1
用web_reg_save_param取出「8,7,5,15,6,5,0,4,0,3,0,3,2,0,0,0,1」這一段,而後用strtok函數切割出一個個數字,第四個數字就是要找的值
例如:
extern char * strtok(char * string, const char * delimiters ); // Explicit declaration
char separators[] = ",";
char * token;
lr_save_string("1,2,3,4,5,6","str");
token = (char *)strtok(lr_eval_string("{str}"), separators); // Get the first token
if (!token) {
lr_output_message ("No tokens found in string!");
return( -1 );
}
while (token != NULL ) { // While valid tokens are returned
lr_output_message ("%s", token );
token = (char *)strtok(NULL, separators); // Get the next token
}
能夠,參考:
http://blog.testsautomation.com/2009/01/web-services-performance-using-loadrunner/
http://blog.testsautomation.com/2009/05/validating-web-service-response-with-xpath/
在analysis中找到了設置是否在報告中包含思考時間的地方作相應的設置便可:
Another issue that I’m facing from time to time is that LoadRunner stops 50% of running users without any notification, issue, error message etc. I’ve find out that it happens only when running with log level set to ‘always send a message’. Because of that, I suggest to run with log level set to ‘Send message only when error occur’.
用flex協議
有這幾個函數可用:
flex_rtmp_connect Connects a client to an RTMP server and sets connection options.
flex_rtmp_disconnect Disconnects a client from an RTMP server.
flex_rtmp_send Sends messages to an RTMP server.
flex_rtmp_receive Receives responses from an RTMP server
Flex can record and replay scripts involving RTMP (Real Time Messaging Protocol). In order to enable RTMP simulation, you must configure the recording options for the Flex protocol.
To enable RTMP:
1 Open the Recording Options dialog box by selecting Tools > Recording Options or clicking the Options button in the Start Recording dialog box.
2 In the Network > Port Mapping node click Options.
3 Set the Send-Receive buffer size threshold to 1500.
一、運行準備:
1)勾選QTP的Tools--Options--Run的"Alow other Mercury products to run tests and components"
2)錄製須要在lr中運行的QTP腳本,而且在QTP腳本中設置事務,Services.StartTransaction "start"與Services.EndTransaction "start"
二、運行QTP腳本
在LR中運行時選擇QTP腳本,爲QTP腳本存放目錄下文件擴展名爲.usr的文件。
注:LR中運行QTP腳本時,只能有一個Vuser,不然將報錯:
The load generator is currently running the maximum number of Vusers of this type
在LR中對Socket進行性能測試時,LR會本身判斷lrs_receive回來的數據的長度,而若是長度不符的話會有時間延遲的狀況(這是性能測試徹底不能接受的事情),若是作到這一點呢,通過反覆嘗試,發現一種簡單的方法(用*代替具體的長度):
相似於將:
recv buf1 12
"Hello, Denny"
改成:
recv buf1 *
"Hello, Denny"
一切OK。
在C:\Program Files\HP\LoadRunner\dat\online_graphs中找到online_resource_graphs.rmd文件,修改[Apache]部分中的EnableInUI爲1
參考:
http://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1274450165814+28353475&threadId=1229523
想在VB Vuser寫入模擬數據操做的過程,而後在VB Vuser裏定義了這個全局變量
Private m_Conn As ADODB.Connection '鏈接對象
Private m_Reco As ADODB.Recordset '結果集
可是在VB Vuser中不識別這個對象,報出user-defined type not defined
須要在Run-Time 設置中的VBA部分把ADO的庫選上
若是用VB Script虛擬用戶來開發就不要,直接用CreateObject來建立ADO對象便可
Office2007的問題,IE加載項禁用Groove GFSBrowser Helper 組件
LR自帶的例子端口號是1080,我怎麼樣把這個端口設置我本身想用的端口號8088,在什麼地方設置在LR安裝目錄下,找到Xitami.config文件,找到portbase,能夠修改它(默認是1000);默認的端口號是portbase+80;要把端口號改爲8088,就把portbase改成8008,保存以後就是了(8088=8008+80)。
腳本文件裏有個default.cfg ,裏面有個參數是 UTF8InputOutput ,將其值改成0
http://hi.baidu.com/higkoo/blog/item/39bbb21bc33d76dcac6e751c.html
LoadRunner自帶的「IP Wizard」用起來很是麻煩,要不停的點,重要的是最後還必須重啓系統生效。
因而乎寫個腳本替代之:
1. 假設客戶端IP爲 192.168.10.31
2. 假設服務端IP爲 192.168.10.10
3. 須要模擬的IP爲 110.119.120.122
那麼,客戶端提供添加虛擬IP的BAT腳本:
netsh interface ip add address 本地鏈接 110.119.120.122 255.255.0.0
對應的刪除設置爲:
netsh interface ip del address 本地鏈接 110.119.120.122
對應服務器添加虛擬路由的Shell腳本:
route add -host 110.119.120.122 gw 192.168.10.31
刪除路由的腳本:
route del -host 110.119.120.122 gw 192.168.10.31
這樣就很是方便了,不用重啓任何機器,執行腳本就生效,再執行腳本就取消。
Here is the command line that you need to execute to run a VuGen script from the command prompt:
<LoadRunner>\bin\mmdrv.exe -usr <path to usr file>
Note:
In order to get all the other options that go with the command, run mmdrv.exe from the command prompt without any options.
把那段C代碼作成DLL,而後在LR中調用
解決辦法:
在被監控機器上更改本地賬戶的共享和安全模式爲經典模式。控制面板->管理工具->本地安全策略->網絡訪問:本地賬戶的共享和安全模式->經典模式。
監視鏈接前的準備工做:
首先保證被監視的windows系統開啓如下二個服務Remote Procedure Call(RPC) 和Remote Registry Service
被監視的WINDOWS機器:右擊個人電腦,選擇管理->共享文件夾->共享 在這裏面要有C$這個共享文件夾,(要是沒有本身手動加)
而後保證在安裝LR的機器上使用運行.輸入\\被監視機器IP\C$ 而後輸入管理員賬號和密碼,若是能看到被監視機器的C盤了,就說明你獲得了那臺機器的管理員權限,能夠使用LR去鏈接了
錯誤分析
腳本錄製可能採用的是URL-based script方式,若是程序定義的字符集合採用的是國際標準,腳本就會出現亂碼現象。
解決辦法從新錄製腳本,在錄製腳本前,打開錄製選項配置對話框進行設置,在「Recording Options」的「Advanced」選項裏先將「Surport Charset」選中,而後選中支持「UTF-8」的選項。
錯誤分析
因爲檢查功能會消耗必定的資源,所以LoadRunner默認關閉了對文本以及圖像的數據執行保護檢查,因此在設置檢查點後,須要開啓檢查功能。
解決辦法打開運行環境設置對話框進行設置,在「Run-time Settings」的「Internet Protocol」選項裏的「Perference」中勾選「Check」下的「Enable Image and text check」選項。
須要注意的是,回放腳本時出現的錯誤有時是程序自身的緣由致使的,所以在解決腳本回放問題前必須保證程序錄製出的腳本是正確的。
錯誤現象1:Action.c(16): Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s)。
錯誤分析:對於HTTP協議,默認的超時時間是120秒(能夠在LoadRunner中修改),客戶端發送一個請求到服務器端,若是超過120秒服務器端尚未返回結果,則出現超時錯誤。
解決辦法:首先在運行環境中對超時進行設置,默認的超時時間能夠設置長一些,再設置屢次迭代運行,若是還有超時現象,須要在「Runtime Setting」>「Internet Protocol:Preferences」>「Advanced」區域中設置一個「winlnet replay instead of sockets」選項,再回放是否成功。
錯誤現象 2:Action.c(81):Continuing after Error -27498: Timed out while processing URL=http://172.18.20.70:7001/workflow/bjtel/leasedline/ querystat/ subOrderQuery.do
錯誤分析:這種錯誤經常是由於併發壓力過大,服務器端太繁忙,沒法及時響應客戶端的請求而形成的,因此這個錯誤是正常現象,是壓力過大形成的。
若是壓力很小就出現這個問題,多是腳本某個地方有錯誤,要仔細查看腳本,提示的錯誤信息會定位某個具體問題發生的位置。
解決辦法:例如上面的錯誤現象問題定位在某個URL上,須要再次運行一下場景,同時在其餘機器上訪問此URL。若是不能訪問或時間過長,多是服務器或者此應用不能支撐如此之大的負載。分析一下服務器,最好對其性能進行優化。
若是再次運行場景後還有超時現象,就要在各類圖形中分析一下緣由,例如能夠查看是否服務器、DNS、網絡等方面存在問題。
最後,增長一下運行時的超時設置,在「Run-Time Settings」>「Internet Protocol:Preferences」中,單擊「options」,增長「HTTP-request connect timeout」 或者「HTTP-request receive」的值。
錯誤現象:某個連接或者圖片名稱爲中文亂碼,腳本運行沒法經過。
錯誤分析:腳本錄製可能採用的是URL-based script方式,若是程序定義的字符集合採用的是國際標準,腳本就會出現亂碼現象。
解決辦法:從新錄製腳本,在錄製腳本前,打開錄製選項配置對話框進行設置,在「Recording Options」的「Advanced」選項裏先將「Surport Charset」選中,而後選中支持「UTF-8」的選項。
錯誤現象1:-404 Not Found服務器沒有找到與請求URI相符的資源,但還能夠繼續運行直到結束。
錯誤分析:此處與請求URI相符的資源在錄製腳本時已經被提交過一次,回放時不可再重複提交一樣的資源,而須要更改提交資源的內容,每次回放一次腳本都要改變提交的數據,保證模擬實際環境,形成必定的負載壓力。
解決辦法:在出現錯誤的位置進行腳本關聯,在必要時插入相應的函數。
錯誤現象2:-500 Internal Server Error服務器內部錯誤,腳本運行中止。
錯誤分析:服務器碰到了意外狀況,使其沒法繼續迴應請求。
解決辦法:出現此錯誤是致命的,說明問題很嚴重,須要從問題的出現位置進行檢查,此時須要此程序的開發人員配合來解決,並且產生的緣由根據實際狀況來定,測試人員沒法單獨解決問題,並且應該儘快解決,以便於後面的測試。
錯誤現象:Action.c(41): Error -27979: Requested form. not found [MsgId: MERR-27979]
Action.c(41): web_submit_form. highest severity level was "ERROR",0 body bytes, 0 header bytes [MsgId: MMSG-27178]"
這時在tree view中看不到此組件的相關URL。
錯誤分析:所選擇的錄製腳本模式不正確,一般狀況下,基於瀏覽器的Web應用會使用「HTML-based script」模式來錄製腳本;而沒有基於瀏覽器的Web應用、Web應用中包含了與服務器進行交互的Java Applet、基於瀏覽器的應用中包含了向服務器進行通訊的JavaScript/VBScript代碼、基於瀏覽器的應用中使用HTTPS安全協議,這時則使用「URL-based script」模式進行錄製。
解決辦法:打開錄製選項配置對話框進行設置,在「Recording Options」的「Internet Protocol」選項裏的「Recording」中選擇「Recording Level」爲「HTML-based script」,單擊「HTML Advanced」,選擇「Script. Type」爲「A script. containing explicit」。而後再選擇使用「URL-based script」模式來錄製腳本。
錯誤現象:在腳本中插入函數Web_find,在腳本中設置文本以及圖像的檢查點,可是在回放過程當中並無對設置的檢查點進行檢查,即Web_find失效。
錯誤分析:因爲檢查功能會消耗必定的資源,所以LoadRunner默認關閉了對文本以及圖像的檢查,因此在設置檢查點後,須要開啓檢查功能。
解決辦法:打開運行環境設置對話框進行設置,在「Run-time Settings」的「Internet Protocol」選項裏的「Perference」中勾選「Check」下的「Enable Image and text check」選項。
錯誤現象:利用LoadRunner 8.0版原本錄製Web Services協議的腳本沒有任何錯誤提示,回放腳本時會出現以下錯誤提示「Error:server returned an incorrectly formatted SOAP response」。
錯誤分析:出現此錯誤的緣由是LoadRunner8.0在錄製Web Services協議的腳本時存在一個缺陷:若是服務器的操做系統是中文的,VuGen會自動將WSDL文件的頭改成<?xml version="1.0"encoding="zh_cn" ?>,因此纔會有此錯誤提示。
解決辦法:下載兩個補丁,分別爲「LR80WebServicesFPI_setup.exe」和「lrunner_web_ services_patch_1.exe」安裝上便可。
1.可能是OS系統問題,修復試試或升級
2.或修復LR試試
Posted on 2011-01-05 12:12 蟈蟈俊 閱讀(433) 評論(0) 編輯 收藏
最近寫的一個Loadrunner腳本,最後一步是點擊「退出」按鈕退出登陸狀態,以下:
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 。
這個默認是120秒,可是常常咱們要設置的更大一些,具體設置方法:Vugen--》Vuser---》Runtime-settings----》Preferences------》option,將Step download timeout(sec)默認值120s改成本身須要的值,其次要改變HTTP-reguest connnect timeout(sec)和HTTP-reguest receive timeout(sec)也爲相應的值。
由於我的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/
使用LoadRunner的web(HTTP/HTML)協議的多用戶向服務器提交數據時,出現錯誤信息:
Action.c(11): Error -27796: Failed to connect to server "test.shunde.gov.cn:80": [10048] Address already in use
Try changing the registry value
HKEY_LOCAL_MACHINESystemCurrentControlSetServicestcpipParametersTcpTimedWaitDelay to 30
and HKEY_LOCAL_MACHINESystemCurrentControlSetServicestcpipParametersMaxUserPort to 65534
and rebooting the machine
See the readme.doc file for more information
解決方法:
打開LoadRunner負載機所在機器的註冊表,將HKEY_LOCAL_MACHINESystemCurrentControlSetServicestcpipParameters項中的TcpTimedWaitDelay值設置爲5s或者其它(按須要調整)也能夠把MaxUserPort值調大(若是這個值不是最大值的話),同時增長腳本的think time,再重啓機器。
嘗試修改註冊表中
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters裏,有以下兩個鍵值:
TcpTimedWaitDelay
MaxUserPort
端口等待時間調小,最大可用端口調大
分析緣由:
由於負載生成器的性能太好,發數據包特別快,服務器也響應特別快,從而致使負載生成器的機器的端口在沒有timeout以前就所有佔滿了。在所有佔滿後,就會出現上面的錯誤。執行netstat –na命令,能夠看到打開了不少端口。因此就調整TCP的time out。即在最後一個端口尚未用到時,前面已經有端口在釋放了。
參數介紹:
TcpTimedWaitDelay 值決定了 TCP/IP 必須通過多久,才能釋放已關閉的鏈接及重用使用它的資源。這個關閉和釋放的間隔稱爲TIME_WAIT狀態,或是區段生命期限上限 (2MSL)狀態的兩倍。在這段時間內,通往用戶端和伺服器的鏈接從新開啓的成本,比創建新的鏈接低。藉由縮減這個項目的值,TCP/IP 能夠更快釋放已關閉的鏈接,提供更多資源給新的鏈接。若是執行中的應用程式須要快速釋放、創建新鏈接,或多個鏈接在 TIME_WAIT 狀態中形成通信量過低,於是須要進行調整的話,請調整這個參數。
預設值是 0xF0,它會將等待時間設爲 240 秒(4 分鐘)。
最小的建議值是 0x1E,它會將等待時間設爲 30 秒。請利用這個程序來檢視或自訂您的值。
啓動regedit 指令,瀏覽至 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTCPIPParameters 登陸次機碼,創建名稱爲 TcpTimedWaitDelay 的新 REG_DWORD 值。
將值設爲十進制 30,也就是十六進制的 0x0000001e。這個值會將等待時間設爲 30 秒。
關閉登陸編輯器。
中止並從新啓動系統。
MaxUserPort 值決定了當應用程式向系統要求可用的使用者埠時,TCP/IP 所能指派的最高埠號。若是您的系統報告創建 Socket 時,發生錯誤異常情況,多是匿名(短時間)埠的數量不當所形成,當系統開啓大量的埠來創建 Web 服務器、資料庫或其餘遠端資源的鏈接時,尤爲如此。
TCP/IP 選項TcpTimedWaitDelay設置(其餘版本的)
當TCP鏈接被關閉時,{ Protocol, Local IP, Local Port, Remote IP, Remote Port}五元組就進入TIME_WAIT狀態,默認時間是4分鐘。能夠經過一組命令看看tcp的鏈接狀態:
netstat -ano>>c:port.txt
本地ip,遠程ip,遠程端口都是固定的,只有本地端口是變化的,本地端口只能使用1024-5000,所以若是在4分鐘內發起了大約4000個鏈接,這時就會發生異常,下面是使用WCF,客戶端的異常:System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted 192.168.101.5:8888
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
at System.ServiceModel.Channels.SocketConnectionInitiator.Connect(Uri uri, TimeSpan timeout)
TCP有個選項 TcpTimedWaitDelay:
描述:肯定 TCP/IP 可釋放已關閉鏈接並重用其資源前,必須通過的時間。關閉和釋放之間的此時間間隔通稱 TIME_WAIT 狀態或兩倍最大段生命週期(2MSL)狀態。此時間期間,從新打開到客戶機和服務器的鏈接的成本少於創建新鏈接。減小此條目的值容許 TCP/IP 更快地釋放已關閉的鏈接,爲新鏈接提供更多資源。若是運行的應用程序須要快速釋放和建立新鏈接,並且因爲 TIME_WAIT 中存在不少鏈接,致使低吞吐量,則調整此參數。
• 打開註冊表編輯器,如 Regedit.exe 或 Regedt32.exe。
• 導航到:HKLMSystemCurrentControlSetServicesTcpipParameters
• 雙擊 TcpTimedWaitDelay,而後將「數值數據」 字段設置爲 60(十進制)。
• 關閉註冊表編輯器,而後從新啓動計算機。
MaxUserPort
描述:肯定在應用程序從系統請求可用用戶端口時,TCP/IP 可指定的最高端口號。
如何查看或設置:
使用 regedit 命令訪問 HKEY_LOCAL_MACHINESYSTEMCurrentControlSet ServicesTCPIPParameters 註冊表子鍵並建立名爲 MaxUserPort 的新 REG_DWORD 值。中止並從新啓動系統。
錯誤以下:
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");
錯誤以下:
1、 Error -27727: Step download timeout (120 seconds)has expired when downloading resource(s). Set the 「Resource Page Timeout is a Warning」 Run-Time Setting to Yes/No to have this message as a warning/error, respectively
處理方法: |
A、應用服務參數設置太大致使服務器的瓶頸
B、頁面中圖片太多
C、在程序處理表的時候檢查字段太大或多
錯誤分析:對於HTTP協議,默認的超時時間是120秒(能夠在LoadRunner中修改),客戶端發送一個請求到服務器端,若是超過120秒服務器端尚未返回結果,則出現超時錯誤。
解決辦法:首先在運行環境中對超時進行設置,默認的超時時間能夠設置長一些,再設置屢次迭代運行,若是還有超時現象,須要在"Runtime Setting">"Internet Protocol:Preferences">"Advanced"區域中設置一個"winlnet replay instead of sockets"選項,再回放是否成功。
53.Action.c(7): Error -27791: Server 「192.168.1.77″ has shut down the connection prematurel
解決方案以下:
一、應用服務器死掉。小用戶時程序上的問題,程序上處理數據庫的問題
二、應用服務沒有死。應用服務參數設置問題。例如:在許多客戶端weblogic應用服務器被拒絕,而在服
務器端沒有錯誤顯示,則有多是weblogic中的server元素的acceptbacklog屬性值設得太低。若是鏈接
時收到connection refused消息,說明應提升該值,每次增長25%。
三、數據庫的鏈接
在應用服務的性能參數可能過小了,數據庫啓動的最大鏈接數(跟硬件的內存有關)
四、有時關閉卡巴斯基也會解決如上問題
1)觀察response time 是否 超出默認的120秒
2)檢查服務器日誌是否有異常以及負載是否太高
3) web_set_timeout 設置更長的超時超時上限
如
web.set_timeout(」CONNECT」, 「360″);
web.set_timeout(」RECEIVE」, 「360″);
web.set_timeout(」STEP」, 「360″))觀察response time 是否 超出默認的120秒這個問題,要詳細分析了。
應該不會是LR自身形成的問題。
把時間調長,就是爲了,定位問題在什麼地方,而不是爲了繞過這個錯誤的出現。
4. Error -27791 connection prematurely
運行Controller時遇到這個error:
Action.c(7): Error -27791: Server "10.10.0.88" has shut down the connection prematurely
解決方案以下:
一、應用服務器死掉。小用戶時程序上的問題,程序上處理數據庫的問題
二、應用服務沒有死。應用服務參數設置問題。例如:在許多客戶端weblogic應用服務器被拒絕,而在服務器端沒有錯誤顯示,則有多是 weblogic中的server元素的acceptbacklog屬性 值設得太低。若是鏈接時收到connection refused消息,說明應提升該值,每次增長25%。
三、數據庫的鏈接。在應用服務的性能參數可能過小了,數據庫啓動的最大鏈接數(跟硬件的內存有關)
四、有時關閉殺毒軟件也會解決如上問題
5. Others
1. Failed to connect to server "域名:80": [10065] No Route to Host
解決:
這種錯誤信息有兩種狀況,一是交換機堵塞,一是服務器網絡堵塞或者CPU沒法響應(網卡中斷處理不過來了)。
從服務器端檢查下iptables 是否開啓,看看 /proc/sys/net/ipv4/ip_conntrack_max 是多少。
2. TTP Status-Code=500 (Internal Server Error)
解決:
A. 這個問題,開發人員從程序和環境進行調優了。
B. 經過抓包發現有大量的sql語句重複執行,建議優化sql。
C. 優化JVM。機器配置:4G的內存,32個線程併發能力
-Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20
3. HTTP Status-Code=504 (Gateway Time-out)
解決:
502 bad Gateway 服務器做爲網關或者代理時,爲了完成請求訪問下一個服務器,但該服務器返回了非法的應答。
504Gateway Timeout 由做爲代理或網關的服務器使用,表示不能及時地從遠程服務器得到應答。
解決:能夠啓動多個tomcat服務,一個tomcat服務可能支撐不了那麼大的併發。(通常狀況下像IBM高配的服務一個tomcat能支持2000併發吧。)(只能讓部署環境的同事幫忙調整,咱們沒這權利啊。)
4. Step download timeout (120 seconds) has expired when downloading non-resource(s)
解決辦法:
1.Virtual User Generator->Vuser->Run-time Settings->Internet Protocol->Proxy 設置成"Obtain the proxy settings from the default browser"(將瀏覽器裏面的代理選項做爲默認選項).。
2.Virtual User Generator->Vuser->Run-time Settings->Internet Protocol->Proxy->User proxy server->點擊"Exceptions" 輸入不須要經過代理服務器代理訪問的IP也能解決此問題。
解決:
能夠修改配置參數(tomcat的),也能夠程序上進行調整超時時間。
如 <Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />
固然了也能夠調整LR的配置但最好不這樣。
此次測試的業務流程很簡單,是向tomcat下的一個自制應用加壓並觀測其性能數據。需求也並不複雜儘可能多地對服務器加壓,多併發多點擊。使用的加壓機是 3臺1U服務器,內存分別爲32g,32g,16g。測試機是1臺1U服務器,內存硬盤cpu都和加壓機相仿。不設置集合點,和思考時間,只自定義一個事 務。
需求對於併發用戶數的理想爲1000以上,每秒點擊在10000以上。開始測試後發現,併發數在100以上後,就開始不斷報錯,錯誤主要是如下兩種
Action.c(10): Error -27796: Failed to connect to server "192.168.12.252:81": [10060] Connection timed out
Action.c(10): Error -27791: Server "192.168.12.252" has shut down the connection prematurely
網上查到的解釋是,加壓機性能過好,致使端口開的過多而且來不及釋放形成的,所以修改了加壓機的maxport數和tcptimewaitdelay值。 重啓後測試,問題明顯好轉但仍然存在。只要併發用戶數超過1000,該報錯便源源不斷,同時隨着報錯數的不斷增長每秒點擊數響應下降。初步判斷是服務器端 來不及響應部分請求致使不少鏈接超時。調試了好久找到了解決辦法,第一步修改runtime setting下,internet protocol-preferences-options中幾個timeout值,強制使lr發起的http請求的超時變長,要修改的值有http- request connect timeout,http-request receive timeout,step download timeout都設置爲800秒,順便提一下,keep-alive http connections應該是http長短鏈接的設置,因爲本次測試的應用均爲短鏈接,因此該值設爲no。修改執行加壓,報錯和點擊數仍然形同水火,一個 增長另一個必然減小。反覆查看lr的設置後嘗試將tools-options-timeout的各個超時也響應增長。加壓後,報錯再次獲得了顯著減小。 在1000用戶數的狀況下點擊數能夠到達每秒20000次而且報錯在萬分之1的比例。本覺得大功告成,誰知場景運行10分鐘後,每秒點擊數驟然降低,5分 鍾以後降低到10000,而且仍有降低趨勢。抓耳撓腮一陣後,分析出問題也許出在加大報錯timeout後,不少 非正常鏈接還沒有斷開,在800s後漸漸超時,鏈接數的減小致使請求數減小。嘗試勾選runtime setting下general-miscellaneous中error handing的設置continue on error。猶如一彎神器,立竿見影。最終測試結果達到了預期。
順便提一下,analysis下對於響應時間的分析比較具體,不只能夠看到每次迭代的時間,每一個事務的時間,還能夠具體到請求和返回的網絡消耗時間,服務器響應時間等等,具體能夠在average transaction response time圖的web page diagnostics中查看,但必須待生成完整日誌之後。
54.Action.c(38): Error -27492: "HttpSendRequest" failed, Windows error code=12002 and retry limit (0) exceeded for URL
在runtime setting中的preferences- ->options-->http-request connect timeout(sec)的值設爲999。
55.錯誤現象:Action.c(81):Continuing after Error -27498: Timed out while processing URL=http://172.18.20.70:7001/workflow/bjtel/leasedline/ querystat/ subOrderQuery.do
錯誤分析:這種錯誤經常是由於併發壓力過大,服務器端太繁忙,沒法及時響應客戶端的請求而形成的,因此這個錯誤是正常現象,是壓力過大形成的。
若是壓力很小就出現這個問題,多是腳本某個地方有錯誤,要仔細查看腳本,提示的錯誤信息會定位某個具體問題發生的位置。
解決辦法:例如上面的錯誤現象問題定位在某個URL上,須要再次運行一下場景,同時在其餘機器上訪問此URL。若是不能訪問或時間過長,多是服務器或者此應用不能支撐如此之大的負載。分析一下服務器,最好對其性能進行優化。
若是再次運行場景後還有超時現象,就要在各類圖形中分析一下緣由,例如能夠查看是否服務器、DNS、網絡等方面存在問題。
最後,增長一下運行時的超時設置,在"Run-Time Settings">"Internet Protocol:Preferences"中,單擊"options",增長"HTTP-request connect timeout" 或者"HTTP-request receive"的值。
6、Action.c(6): Error -26612: HTTP Status-Code=500 (Internal Server Error) for http://192.168.0.8:10001/logonConsole.do;jsessionid={JSESSIONID2}
形成HTTP-500錯誤,有朋友告訴我以下幾個可能:
一、運行的用戶數過多,對服務器形成的壓力過大,服務器沒法響應,則報HTTP500錯誤。減少用戶數或者場景持續時間,問題獲得解決。
二、該作關聯的地方沒有去作關聯,則報HTTP500錯誤。進行手工或者自動關聯,問題獲得解決。
三、錄製時請求的頁面、圖片等,在回放的時候服務器找不到,則報HTTP500錯誤,若該頁面可有可無,則能夠在腳本中註釋掉,問題將會獲得解決。例如:有驗證碼的狀況下,儘管測試時已經屏蔽了,可是錄製的時候提交了請求,但回放的時候不存在響應。
四、參數化時的取值有問題,則報HTTP500錯誤。可將參數化列表中的數值,拿到實際應用系統中進行測試,可排除問題。
五、更換了應用服務器(中間件的更換,如tomcat、websphere、jboss等),仍是利用原先錄製的腳本去運行,則極可能報HTTP500錯誤。由於各類應用服務器處理的機制不同,所錄製的腳本也不同,解決辦法只有從新錄製腳本。
六、Windows xp2 與ISS組件不兼容,則有可能致使HTTP500錯誤。對ISS組件進行調整後問題解決。
七、系統開發程序寫的有問題,則報HTTP500錯誤。例若有些指針問題沒有處理好的,有空指針狀況的存在。修改程序後問題解決。
查找後臺日誌發現報了不少0ra-01000錯誤,這是oracle達到最大遊標參數值,google了下,最大緣由多是JDBC鏈接沒關閉。最後查找weblogic鏈接池出了問題,不少鏈接沒關閉。
7、Action.c(15): 錯誤 -27496: 內部錯誤(呼叫客戶服務): _eStat (7) != LRW_ITEM_STAT_ENUM_UNHANDLED for HandledTask at 048E180C
8、Action.c(56): Error -27995: Requested link ("Text=計劃管理") not found [MsgId: MERR-27995]
方法:在IE中的工具—>Internet選項—>高級—>HTML設置中選擇第二個腳本類型.
9、錯誤 -27279:內部錯誤(呼叫客戶服務):Report initialization failed , error code = -2147467259 [MsgId : MERR-27279 ]
建議重裝一下LR.
這種問題有可能和你安裝有關.dll文件出錯不是說寫的程序就能修改的.
10、設置了持續時間,出現錯誤爲:27796, Failed to connect to server 'hostname';port_ld': 'reason'.10048.(憑記憶寫的,不知道寫錯了沒有)
成功的解決方法:
在註冊表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters裏,有以下兩個鍵值:
TcpTimedWaitDelay
MaxUserPort
1,這裏的TcpTimedWaitDelay默認值應該中是30s,因此這裏,把這個值調小爲5s(按須要調整)。
2,也能夠把MaxUserPort調大(若是這個值不是最大值的話)。
11、如何解決LodRunner中報錯關於Error -10489 : Exception was raised when calling per-thread-terminate function
在用Loadrunner實施性能測試時,採用Goal模式加壓,存在若是持續長時加壓時LoadRunner的Controller會報 Error -10489 : Exception was raised when calling per-thread-terminate function錯誤;
問題產生緣由:
Unlike the earlier Windows versions, Windows 2000 and Windows XP have the default environment set to C:\Document and Settings\<user-name>\Local Settings\Temp instead of C:\Windows\temp. This long path with a space can cause several problems for LoadRunner. To resolve the issue, change to a directory without empty spaces.
解決方法:
在C盤(或是其它盤都可以)新建TEMP文件夾(爲了後續設置臨時文件準備)
右鍵"個人電腦"->高級->環境變量->編輯修改TEMP變量目錄,指身上面新建的目錄,如個人指向C:\TEMP->保存便可^_^
1> 問題描述Connection reset by peer. Error code : 10054
設置下載等的超時
用VuGen錄製腳本後,回放或者加壓的時候,可能會出現錯誤信息「Action.c(65): Error : socket6 - Connection reset by peer. Error code : 10054」
這是由於,下載的速度慢,致使超時,因此,須要調整一下超時時間,方法以下:
在Run-time setting窗口中的‘Internet Protocol’-‘Preferences’設置set advanced options(設置高級選項),,從新設置一下「HTTP-request connect timeout(sec)」
2> 問題描述:
Error:Failed to connect to server「192.168.2.192」:[10060]Connection
Error:timed out Error:Server「192.168.2.192」has shut down the connection prematurely
緣由:
1> 應用訪問死掉
小用戶時:程序上的問題。程序上存在數據庫的問題
2> 應用服務沒有死
應用服務參數設置問題
例如:
在許多客戶端鏈接Weblogic應用服務器被拒絕,而在服務器端沒有錯誤顯示,則有多是Weblogic中的server元素的AcceptBacklog屬性值設得太低。若是鏈接時收到connection refused消息,說明應提升該值,每次增長25%
Java鏈接池的大小設置,或JVM的設置等
3> 數據庫的鏈接
在應用服務的性能參數可能過小了
數據庫啓動的最大鏈接數(跟硬件的內存有關)
3> 問題描述
Error:Page download timeout(120seconds)has expired
分析緣由:
應用服務參數設置太大致使服務器的瓶頸
頁面中圖片太多
在程序處理表的時候檢查字段太多
12、LoadRunner腳本中出現亂碼:在錄製Web協議腳本時出現中文亂碼,在回放腳本時會使回放中止在亂碼位置,腳本沒法運行。
錯誤現象:某個連接或者圖片名稱爲中文亂碼,腳本運行沒法經過。
錯誤分析:腳本錄製可能採用的是URL-based script方式,若是程序定義的字符集合採用的是國際標準,腳本就會出現亂碼現象。
解決辦法:從新錄製腳本,在錄製腳本前,打開錄製選項配置對話框進行設置,在"Recording Options"的"Advanced"選項裏先將"Surport Charset"選中,而後選中支持"UTF-8"的選項。
十3、LoadRunner HTTP服務器狀態代碼:在錄製Web協議腳本回放腳本的過程當中,會出現HTTP服務器狀態代碼,例如常見的頁面-404錯誤提示、-500錯誤提示。
錯誤現象1:-404 Not Found服務器沒有找到與請求URI相符的資源,但還能夠繼續運行直到結束。
錯誤分析:此處與請求URI相符的資源在錄製腳本時已經被提交過一次,回放時不可再重複提交一樣的資源,而須要更改提交資源的內容,每次回放一次腳本都要改變提交的數據,保證模擬實際環境,形成必定的負載壓力。
解決辦法:在出現錯誤的位置進行腳本關聯,在必要時插入相應的函數。
錯誤現象2:-500 Internal Server Error服務器內部錯誤,腳本運行中止。
錯誤分析:服務器碰到了意外狀況,使其沒法繼續迴應請求。
解決辦法:出現此錯誤是致命的,說明問題很嚴重,須要從問題的出現位置進行檢查,此時須要此程序的開發人員配合來解決,並且產生的緣由根據實際狀況來定,測試人員沒法單獨解決問題,並且應該儘快解決,以便於後面的測試。
十4、LoadRunner請求沒法找到:在錄製Web協議腳本回放腳本的過程當中,會出現請求沒法找到的現象,而致使腳本運行中止。
錯誤現象:Action.c(41): Error -27979: Requested form not found [MsgId: MERR-27979]
Action.c(41): web_submit_form highest severity level was "ERROR",0 body bytes, 0 header bytes [MsgId: MMSG-27178]"
這時在tree view中看不到此組件的相關URL。
錯誤分析:所選擇的錄製腳本模式不正確,一般狀況下,基於瀏覽器的Web應用會使用"HTML-based script"模式來錄製腳本;而沒有基於瀏覽器的Web應用、Web應用中包含了與服務器進行交互的Java Applet、基於瀏覽器的應用中包含了向服務器進行通訊的JavaScript/VBScript代碼、基於瀏覽器的應用中使用HTTPS安全協議,這 時則使用"URL-based script"模式進行錄製。
解決辦法:打開錄製選項配置對話框進行設置,在"Recording Options"的"Internet Protocol"選項裏的"Recording"中選擇"Recording Level"爲"HTML-based script",單擊"HTML Advanced",選擇"Script Type"爲"A script containing explicit"。而後再選擇使用"URL-based script"模式來錄製腳本。
十5、LoadRunner不執行檢查方法:在錄製Web協議腳本中添加了檢查方法Web_find,可是在腳本回放的過程當中並無執行。
錯誤現象:在腳本中插入函數Web_find,在腳本中設置文本以及圖像的檢查點,可是在回放過程當中並無對設置的檢查點進行檢查,即Web_find失效。
錯誤分析:因爲檢查功能會消耗必定的資源,所以LoadRunner默認關閉了對文本以及圖像的檢查,因此在設置檢查點後,須要開啓檢查功能。
解決辦法:打開運行環境設置對話框進行設置,在"Run-time Settings"的"Internet Protocol"選項裏的"Perference"中勾選"Check"下的"Enable Image and text check"選項。
十6、LoadRunner回放Web Services協議腳本錯誤:LoadRunner 8.0版本在錄製Web Services協議的腳本時正常,但在回放時會出現錯誤,提示中止腳本運行。
錯誤現象:利用LoadRunner 8.0版原本錄製Web Services協議的腳本沒有任何錯誤提示,回放腳本時會出現以下錯誤提示"Error:server returned an incorrectly formatted SOAP response"。
錯誤分析:出現此錯誤的緣由是LoadRunner8.0在錄製Web Services協議的腳本時存在一個缺陷:若是服務器的操做系統是中文的,VuGen會自動將WSDL文件的頭改成<?xml version="1.0"encoding="zh_cn" ?>,因此纔會有此錯誤提示。
解決辦法:下載兩個補丁,分別爲"LR80WebServicesFPI_setup.exe"和"lrunner_web_ services_patch_1.exe"安裝上便可。
http://wenku.baidu.com/view/a576eb0a79563c1ec5da71c8.html
十7、業務:進入借款單(顯示借款單列表),新建借款單,新建後顯示借款單列表(新建的借款單在此列表中有顯示)
我是錄製的腳本,可運行時,提示 Action.c(112): 錯誤 -26627: 對於「http://192.168.1.105:8080/T3/fee/feeLoanList.action」,HTTP 狀態代碼=404 (Not Found)
解決:
說兩點:
1.手動正常未必就真正常,LR加壓的時候可能鏈接數佔滿了,因此出404
2.還有一種狀況,腳本里有檢查語句,叫什麼lr_check仍是什麼的,就是一個腳本內部檢查是否有該資源用的,不見着他我拼不出來,若是有,註釋掉看看
十8、Action.c(38): Error -27492: "HttpSendRequest" failed, Windows error code=12002 and retry limit (0) exceeded for URL
在runtime setting中的preferences- ->options-->http-request connect timeout(sec)的值設爲999
Runtime Setting>Preferences>Advanced區域中設置一個winlnet replay instead of sockets選項(不勾選此項報 Error -27727)
十9、錯誤 -27279:內部錯誤(呼叫客戶服務):Report initialization failed , error code = -2147467259 [MsgId : MERR-27279 ]
警告: 擴展 LrXml.dll 報告在調用函數 ExtPerThreadInitialize 時出現錯誤 -1
錯誤: Vuser 初始化擴展 LrXml.dll 失敗。
Vuser Terminated.
建議你重裝一下LR.
這種問題有可能和你安裝有關.dll文件出錯不是說寫的程序就能修改的.
負載測試是經過逐步增長系統負載,測試系統性能的變化,並最終肯定在知足性能指標的狀況下,系統所能承受的最大負載量的測試,例如,訪問一個頁面的響應時間規定不超過1秒,負載測試就是測試在響應時間爲1秒時,系統所能承受的最大併發訪問用戶的數量。
壓力測試一般是在高負載狀況下來對系統的穩定性進行測試,更有效地發現系統穩定性的隱患和系統在負載峯值的條件下功能隱患等。
性能測試:指在必定的約束條件下(指定的軟件、硬件、網絡環境等),肯定系統所能承受的最大負載壓力。
性能測試包含負載測試、壓力測試、大數據量測試、疲勞強度測試等。
第一,分析產品結構,明確性能測試的需求,包括併發、極限、配置和指標等方面的性能要求,必要時基於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的命中狀況。
A4:制定性能測試計劃—>開發測試腳本—>設計測試場景—>執行測試場景—>監控測試場景—>分析測試結果
功能測試經過;通常須要進行性能測試的系統,都是用戶量比較大、業務使用比較頻繁、比較重要的功能模塊。
A6:主要有三部分組成:
使用Virtual User Generator錄製測試腳本
LoadRunner的Controller組件。
在性能測試過程當中,須要模擬大量用戶在同一時刻,訪問系統並同時操做某一任務,能夠經過配置集合點來實現,多個用戶同時進行某操做;
集合點能夠在服務器上建立密集的用戶負載,使LoadRunner可以測試服務器在負載狀態下的性能。
設置集合點函數:lr_rendezvous("Meeting"); // Meeting是集合點名稱
場景用於模擬用戶實際業務操做;
LoadRunner中場景有手工場景和麪向目標的場景。
設置場景:選擇場景類型、設置運行時設置、模擬用戶數、加減壓方式、持續時間,配置負載生成
1.選擇場景中須要的腳本
2.選擇爲目標場景,仍是指定的手工場景
3.設置用戶數、設置產生負載的設備
4.設置執行策略
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,咱們錄製腳本以前,能夠把系統的
關聯:不少構架用sessionid等方法標識不一樣任務和數據,應用在每次運行時方式發送數據不徹底相同,須要利用的機制對錄製的腳本進行處理,這種機制叫作關聯(服務端發送到客戶端)
目標場景,手工場景
2.錄製完成後,vuser-scan action for correlations
web_reg_save_param()函數主要根據須要作關聯的動態數據前面和後面的固定字符串來識別、提取動態數據,因此在作關聯時,須要找出動態數據的左、右邊界字符串。
在init、end 中不能使用集合點、事務等, init、end只執行一次。
在runtime_settings中download filter裏面進行設置。
就是代理服務器
HTTP-request connect timeout、HTTP-request receive timeout、step download timeout
ContentCheck的設置是爲了讓VuGen 檢測何種頁面爲錯誤頁面。若是被測的Web 應用沒有使用自定義的錯誤頁面,那麼這裏不用做更改;若是被測的Web 應用使用了自定義的錯誤頁面,那麼這裏須要定義,以便讓VuGen 在運行過程當中檢測,服務器返回的頁面是否包含預約義的字符串,進而判斷該頁面是否爲錯誤頁
面。若是是,VuGen就中止運行,指示運行失敗。
使用方法:點擊在runtime settings中點擊「contentcheck」,而後新創建一個符合要求的應用程序和規則,設定須要查找的文本和前綴後綴便可使用。
模擬用戶訪問速度的帶寬。
能夠很直觀的看到,在負載下系統的運行狀況以及各類資源的使用狀況,能夠對系統的性能瓶頸定位、性能調優等起到想要的輔助做用。
在controller中,點擊detailis-Refresh-script便可。
線程有本身的全局數據。線程存在於進程中,所以一個進程的全局變量由全部的線程共享。因爲線程共享一樣的系統區域,操做系統分配給一個進程的資源對該進程的全部線程都是可用的,正如全局數據可供全部線程使用同樣。在Controller中將使用驅動程序(如mdrv.exe、r3vuser.exe)運行vuser。若是按進程運行每一個vuser,則對於每一個vuser實例,都將反覆啓動同一驅動程序並將其加載到內存中。將同一驅動程序加載到內存中會佔用大量的RAM(隨機存儲器)及其餘系統資源。這就限制了能夠在任一負載生成器上運行的vuser數量。若是按線程運行每一個vuser,Controller爲每50個vuser(默認狀況下)僅啓動驅動程序(如mdrv.exe)的一個實例。該驅動程序將啓動幾個vuser,每一個vuser都按線程運行。這些線程vuser將共享父驅動進程的內存段。這就消除了屢次從新加載驅動程序/進程的須要,節省了大量內存空間,從而能夠在一個負載生成器上運行更多的Vuser.
在controller中,點擊Results-Results settings,在裏面進行相應的設置便可。
對集合點策略進行相應的設置便可。即在controller中,點擊Scenario-Rendezvous-policy進行相應的設置便可,因爲題目中「一半的用戶」沒有說明白具體指什麼樣的用戶,如今很差肯定具體對裏面的哪一個選項進行設置。
A:通用的API:,就是跟具體的協議無關,在任何協議的腳本里都能用的;
B:針對協議的:像lrs前綴是winsock的;lrd的是針對database;
C:自定義的:這個範圍就比較廣了;好比至少有Java Vuser API 、lrapi、XML API。還能夠添加WindowsAPI和自定義函數庫。
【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】: 提取結果集中得下一條記錄
同一場景
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、數據庫的鏈接
(1、在應用服務的性能參數可能過小了 2、數據庫啓動的最大鏈接數(跟硬件的內存有關))
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以免磁盤排序 。
內存排序命中率 :
1.A、應用服務死掉。
(小用戶時:程序上的問題。程序上處理數據庫的問題)
B、應用服務沒有死
(應用服務參數設置問題)
例:在許多客戶端鏈接Weblogic應用服務器被拒絕,而在服務器端沒有錯誤顯示,則有多是Weblogic中的server元素的AcceptBacklog屬性值設得太低。若是鏈接時收到connection refused消息,說明應提升該值,每次增長25%
C、數據庫的鏈接
(一、在應用服務的性能參數可能過小了 二、數據庫啓動的最大鏈接數(跟硬件的內存有關))
1.lr_think_time默認是沒有啓用的。因此
咱們在執行測試或在回放的時候啓用它。具體操做爲:Vugen--》Vuser---》Runtime-settings-----》thinktime-----》選中Replay thinktime,其餘設置根據實際須要。
關於thinktime的一個詳細的介紹和用法,見:http://www.testage.net/html/19/n-155019.html
2.設置Rendezvous的時間。
在Controller中,Scenarioc菜單-----》Rendezvous 進入就可看到目前腳本中的各個集合點,選中一個,而後點擊「Policy」進入後,就能夠設置集合點的屬性,Rendezvous默認爲30秒,能夠從新設置成本身指望的值。
3.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)也爲相應的值。
4.修改本機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/
執行後能夠修改TCP/IP併發鏈接數,通常狀況建議修改到1024,P2P下載夠了。如何修改TCP/IP併發鏈接數,網絡上提供很多修改辦法,但其中有很多是行不通的,本文將作詳細分析.
1、註冊表修改法的誤區
2、使用工具來替換Tcpip.sys
3、DOS下修改Tcpip.sys文件
4、使用比特精靈附帶的工具
以 上幾種方法雖然提升了Windows XP SP2的多線程訪問速度,但卻下降了SP2的安全性能,若是你的電腦感染了病毒和木馬,過多地啓用新線程,會加速病毒和木馬地蔓延,所以你在追求網絡下載 速度的同時,也要注意網絡安全。建議你及時安裝升級殺毒軟件和防火牆,若是是普通用戶,能夠利用上面的方法,將TCP最大併發鏈接數設置爲 10~30,BT用戶能夠設置爲100~150。
6.對LR中報WSA_IO_pending的解析和解決
Message Code 27740
Overlapped transmission of request to '%1' for URL 'URL' failed.
The transmission of data to the server failed. It could be a network, router, or server problem. The word Overlapped refers to the way LoadRunner sends data in order to get a Web Page Breakdown.
Troubleshooting
Add the following statement to the beginning of the script to disable the breakdown of the "First Buffer" into server and network time: web_set_sockets_option("OVERLAPPED_SEND", "0");
web_set_sockets_option("OVERLAPPED_SEND", "0");
7.關於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");
8.LR中錯誤代號爲27796的一個解決方法
問題:
曾經遇到過一個問題,在一次性能測試過程當中,使用http協議的多用戶向服務器發送請求。設置了持續時間,出現錯誤爲:27796, Failed to connect to server 'hostname';port_ld': 'reason'.10
048。
分析
因 爲負載生成器的性能太好,發數據包特別快,服務器也響應特別快,從而致使負載生成器的機器的端口在沒有timeout以前就所有佔滿了。在所有佔滿後,就 會出現上面的錯誤。執行netstat –na命令,能夠看到打開了不少端口。因此就調整TCP的time out。即在最後一個端口尚未用到時,前面已經有端口在釋放了。
成功的解決方法:
在負載生成器的註冊表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters裏,有以下兩個鍵值:
TcpTimedWaitDelay
MaxUserPort
1,這裏的TcpTimedWaitDelay默認值應該中是30s,因此這裏,把這個值調小爲5s(按須要調整)。
2,也能夠把MaxUserPort調大(若是這個值不是最大值的話)。
反覆驗證,問題解決。
Loadrunner性能調優-服務器tcp鏈接數和數據庫鏈接數配置
在壓力測試過程當中,常常會遇到 500internal error錯誤,這一般是服務鏈接或數據庫鏈接方面的錯誤。
這個時候咱們須要察看後臺log:
1. Loadrunner 的log,能夠查看是哪一個action 出了錯。
2. Web service log, 這個根據部署的web service 的不一樣而不一樣。
我這裏使用的是glassfish v3.0, log: ../domains/Domainname/Log
調優:
1. 設置服務器tcp的容許最大鏈接數:windows 2003, 須要裝插件:tcpz_20090409
2. 設置數據庫的容許最大鏈接數:Oracle 11g
select value from v$parameter where name = 'processes' --查看數據庫最大鏈接數
select count(*) from v$process --查看當前實際鏈接數
alter system set processes = 300 scope = spfile; --修改數據庫最大鏈接數
SELECT osuser, a.username,cpu_time/executions/1000000||'s', sql_fulltext,machine
from v$session a, v$sqlarea b where a.sql_address =b.address order by cpu_time/executions desc;
3. 修改oracle 的監聽配置,略。
總之,性能測試過程當中可能會遇到不少報錯,測試過程當中須要監視web service, db connection, web server hardware and db hardware.
察看log有助於快速找到問題根源。
聯繫QQ 6449694