总结——LR学习总结
2.1??? web_submit_data
頁面提交數據項。輸入框輸入。使用用戶名和密碼進行登錄用web_submit_data()函數提交表單數據:HTTP POST 請求,最常見的參數形式; Web_submit_form差不多。
1)? EXTRARES:在開始錄制選項中,Toos—Recording Option下—Recording選項中,有一個Advanced HTML選項,可以設置是否錄制非HTML資源。只有選擇了“Record within the current script step”時,List of Resource Attributes才會被錄制到(EXTRARES下面的URL才會出現)。非HTML資源(如:gif和jpg等圖象文件,javascript、VBScript、activex、小程序)。
2)? Snapshot:顧名思義,就是快照,代表當前的step,Snapshot顯示了客戶端在執行完當前step后的樣子。在Tree Ciew右側的frame中可以查看Snapshot,在LoadRunner 8.0中,Snapshot包含Page View、Client Request和Server Response。Snapshot有兩種生成方式,一種是在record的時候生成,另一種是在replay的時候生成。你可以對比兩種方式生成的Snapshot,以發現哪些是動態值,需要參數化。
?
2.2??? web_url
根據url獲取圖片;用web_url()函數訪問數據;請求方式:HTTP GET 請求;加載指定的Web頁面(GET請求)?。
2.3??? web_custom_request()
將終端信息提交到服務端進行保存;用web_custom_request()函數提交數據:HTTP POST 請求,請求參數為json格式;
2.4??? bfDeleteRoles
刪除前的校驗。deleteRoles刪除。程序里寫的兩個向服務器提交數據的方法。不是重復錄制。
2.5??? 數據量大小
數據庫中1w條記錄與7w條,查詢響應時間應該
?
2.6??? top
2.7??? free
2.8??? iostat
2.9??? 錄制腳本時,lr不能打開瀏覽器。
?? 解決辦法:關閉所有lr,任務管理器中結束ie瀏覽器的進程,執行"C:\Program Files (x86)\HP\LoadRunner\bin\register_vugen.bat",然后再重新錄制。 如果還是不可以,需要重啟電腦。
2.10? 參數設置
腳本設置完參數化,腳本運行的每一遍所取的參數化的值都不一樣,那么這個值按照個什么情況來取呢?會有很多種方式
Select?next?row【選擇下一行】:
順序(Sequential):按照參數化的數據順序,一個一個的來取。
隨機(Random):參數化中的數據,每次隨機的從中抽取數據。
唯一(Unique):為每個虛擬用戶分配一條唯一的數據
?
Update?value?on【更新時的值】:?
每次迭代(Each?iteration)?:每次迭代時取新的值,假如50個用戶都取第一條數據,稱為一次迭代;完了50個用戶都取第二條數據,后面以此類推。
每次出現(Each?occurrence):每次參數時取新的值,這里強調前后兩次取值不能相同。
只取一次(once)?:參數化中的數據,一條數據只能被抽取一次。(如果數據輪次完,腳本還在運行將會報錯)
?
上面兩個選項都有三種情況,如果將他們進行組合,將產生九種取值方式。
Select?Next?Row 【選擇下一行】 | Update?Value?On 【更新時的值】 | Replay?Result 【結果】 |
順序(Sequential) | 每次迭代(Each?iteration) | 結果:分別將15條數據寫入數據表中 功能說明:每迭代一次取一行值,從第一行開始取。當所有的值取完后,再從第一行開始取 如:如果參數化文件中有15條數據,而迭代設置為16次,那執行結果中,參數化文件第一行的數據有兩條 |
順序(Sequential) | 每次出現(Each?occurrence) | 結果:分別將15條數據寫入數據表中 功能說明:每迭代一次取一行值,從第一行開始取。當所有的值取完后,再從第一行開始取 如:如果參數化文件中有15條數據,而迭代設置為16次,那執行結果中,參數化文件第一行的數據有兩條 |
順序(Sequential) | 只取一次(once) | 結果:表中寫入15條一模一樣的數據。 功能說明:每次迭代都取參數化文件中第一行的數據。 |
隨機(Random) | 每次迭代(Each?iteration) | 結果:表中寫入15條數據,但可能有重復數據出現 功能說明:每次從參數化文件中隨機選擇一行數據進行賦值 |
隨機(Random) | 每次出現(Each?occurrence) | 結果:表中寫入15條數據,但可能有重復數據出現 功能說明:每次從參數化文件中隨機選擇一行數據進行賦值 |
隨機(Random) | 只取一次(once) | 結果:表中寫入15條相同數據 功能說明:第一次迭代時隨機從參數化文件中取一行數據,后面每次迭代都用第一次迭代的數據。 |
唯一(Unique) | 每次迭代(Each?iteration) 自動分配塊大小 | 結果:分別將15條數據寫入數據表中 功能說明:第一次迭代取參數化文件中的第一條數據,第二次迭代取第二條數據,以此類推。 注:如果設置迭代次數為16次。結果:在執行第16次迭代時會拋異常,異常日志可在LoadRunner的回放日志(replayLog)中看到。 |
唯一(Unique) | 每次出現(Each?occurrence) 步長為1 | 結果:分別將15條數據寫入數據表中 功能說明:第一次迭代取參數化文件中的第一條數據,第二次迭代取第二條數據,以此類推。 注:如果設置迭代次數為16次,而參數化文件中只有15條數據,明顯數據不夠。此時可以設置“when?out?of?values”屬性來判斷當數據不夠時的處理方式 Abort?Vuser:中斷虛擬用戶 Countinue?in?a?cylic?manage:循環取參數化文件中的值,即:當參數化文件中的值取完后又從參數化文件的第一行開始取值。 Countinue?with?last?value:繼續用最后一條數據 |
唯一(Unique) | 只取一次(once) | 結果:表中寫入15條相同數據 功能說明:每次都取參數文件中的第一條數據進行賦值 |
?
?
總結性:
Unique , Each?iteration? ,? Countinue?in?a?cylic?manage
?
2.11? 關聯
int web_reg_save_param (const char *mpszParamName, <List of Attributes>, LAST);
ParamName:存放動態數據的參數名稱。
list of Attributes:其他屬性,包含 “Notfound”、“LB”、“RB”、“RelFrameID”、“Search”、“ORD”、“SaveOffset”、“Convert”以及“SaveLen”。
下面將詳細說明每個屬性值的意義:
1、Notfound:指定當找不到要找的動態數據時該怎么處理。當指定Notfound=error時,表示著找不到動態數據時,就發出一個錯誤消息。此為該屬性的默認值。當指定Notfound=warning時,表示當找不到動態數據時,不發出錯誤消息,只發出警告,腳本也會繼續執行下去不會中斷。在對腳本出錯時,可以如此設置。
2、LB:動態數據的左邊界字符串。此屬性是必須要有的,而且區分大小寫。
3、RB:動態數據的右邊界字符串。此屬性是必須要有的,而且區分大小寫。
4、RelFrameID:相對于URL而言,欲搜尋的網頁的Frame。此屬性可以是All或是數字,而且可有可無。
5、Search:搜尋的范圍,其值可以是Headers(只搜尋headers)、Body(只搜尋body部分,不搜尋header)、Noresource(只搜尋body部分,不搜尋header與resource)或是All(搜尋全部范圍,此為默認值),此屬性可有可無。
6、ORD:指明從第幾次出現的左邊界開始才是要擷取的數據,默認值是1。假如該屬性值為All,則所有找到符合的數據會存儲在數組中。此屬性可有可無。
7、SaveOffset:當找到符合的動態數據時,從第幾個字符開始才開始存儲到參數中。此屬性值不可為負數,其默認值為0。
8、Convert:轉換數據格式。當指定該屬性值為HTML_TO_URL時,意味著將HTML-encoded數據轉成URL-encoded數據格式。如果是HTML_TO_TEXT,表示將HTML-encoded數據轉成純文字數據格式。
9、SaveLen:當找到匹配項后,偏移量之后的幾個字元存儲到參數中。此參數可有可無,默認值是-1,表示一直到結尾的整個字符串都存入參數中.
怎么插入關聯函數呢?
根據我的經驗,當找到兩個腳本的差異后,在對應區域插入關聯函數,單擊回車鍵,顯示一行為空,在此行可以手動輸入關聯函數web_reg_save_param("參數名稱","左邊界","右邊界","查詢區域",LAST);或單擊鼠標右鍵單擊【insert】>【net step...】>在add step界面,step type中選擇services>web_reg_save_param,單擊【ok】鍵,彈出如下圖所示:
單擊【OK】鍵,顯示如下信息:
web_reg_save_param("lt",
??"LB/IC=name=\"lt\" value=\"",
??"RB/IC=\"",
??"Ord=1",
??"Search=Body",
??LAST);
對腳本中需要參數化進行替代,如下圖所示:
?
對于確定參數的左右邊界,我個人建議是在找到腳本中差異性的地方【LT-68750-afrD2frlzMHDQ1wwDsjlNugZgY0mxw】后復制,然后在Generation Log日志中通過ctrl+F組合鍵查找,如下圖所示:
?對于引號需要使用【\】作轉義,例如上面的左邊界可以寫成name\"lt\"? value=\"?? ,右邊界可以寫成\"? 。
?
第五步:驗證關聯函數是否正確。
首先設置一下輸出日志,在VuGen的工具欄運行時設置【Run-time Settings】>log>勾選Enable logging>Always send messages>Extended log>勾選Parameter substitution。個人觀念,在負載測試時不需要輸出參數日志,改為Standard log日志即可,因為輸出參數日志也需要時間。如下圖所示:
?回放腳本時,會在Replay Log日志中可以顯示關聯參數的相應值,此值是動態變化的,每一次執行后,顯示的值都不一樣。如下圖所示:
?
2?????? 環境配置
2.1??? cpu
4個cpu,8核。 (之前是2核cup ,后來調到8核cpu。Cpu 都是2的次冪形式。)看nmon中sys_summ 圖的%比。
?
2.2??? 內存
10g內存。(之前是6g內存)。看nmon中mem圖中memfree? 和 memtotal ,剩余空間和總空間。
?
2.3??? 線程數
java線程數:來一個用戶會占用一個線程,用完隨即釋放。 我們測試的只是登陸退出,所以退出后線程立馬釋放。在weblogic 控制臺中會顯示出線程活動數和空閑數,如果有等待的線程數說明這個線程數不夠用。根據處理業務的大小判斷,一個cpu可處理25-30個線程。
# 調整java進程數。
export JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.threadpool.MinPoolSize=100"
export JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.threadpool.MaxPoolSize=550"
?
?
linux下系統對用戶的默認線程數做了限制,可以通過:
ulimit?-a
命令進行查看:
core?file?size??????????(blocks,?-c)?0
data?seg?size???????????(kbytes,?-d)?unlimited
scheduling?priority?????????????(-e)?0
file?size???????????????(blocks,?-f)?unlimited
pending?signals?????????????????(-i)?515223
max?locked?memory???????(kbytes,?-l)?64
max?memory?size?????????(kbytes,?-m)?unlimited
open?files??????????????????????(-n)?1024
pipe?size????????????(512?bytes,?-p)?8
POSIX?message?queues?????(bytes,?-q)?819200
real-time?priority??????????????(-r)?0
stack?size??????????????(kbytes,?-s)?10240
cpu?time???????????????(seconds,?-t)?unlimited
max?user?processes??????????????(-u)?1024
virtual?memory??????????(kbytes,?-v)?unlimited
file?locks??????????????????????(-x)?unlimited
其中
max?user?processes??????????????(-u)?1024
表示當前系統允許的最大線程數,可以把此參數設大一些。
ulimit?-u?5000
設置當前系統用戶最大允許的線程數,只對本次會話有效,如果想要永久生效,可以通過修改:
$?cat?/etc/security/limits.d/90-nproc.conf?
#?Default?limit?for?number?of?user's?processes?to?prevent
#?accidental?fork?bombs.
#?See?rhbz?#432903?for?reasoning.
?
*??????????soft????nproc????1024
只需要將1024改成你需要的值即可,設置完需要重啟系統已生效。
?
?
?
?
2.4??? ??Stuck?Thread?MaxTime
堵塞線程時間,超過這個時間沒有返回的執行線程,系統將認為是堵塞線程如果weblogic認為某個隊列中的所有的線程全部堵塞的話,weblogic將會增加執行線程的數量。注意:執行線程的數量一旦增加目前weblogic不會去減少他,如果增加了一些線程以后再次出現overflow的警告,weblogic會繼續增加執行線程的數量,一直到達到上限為止。
?
例如可以改成:默認600?改成1200?
?
?
?
2.5??? weblogic連接數
weblogic連接數:50-450 ,最大值比線程數多點就行了。
?
2.6??? JTA
JTA :3000
?
2.7??? 數據庫session連接數
數據庫session連接數:4000 。 硬件提升后,發現壓不上去,而且打開瀏覽器登陸時,包數據庫連接池pool 問題。 經查看是連接數過多,因為登陸后有好幾條sql語句,每一條占用一個session連接數。
?
?
2.8??? 網絡
網絡是:1000M 。 開始是100M的。 壓不上去了后來看了一下網絡拓撲圖,發現連的是100M交換機的。 看nmon中net圖,1000M / 8 =120 MB/S ,所以圖的上行和下行各占60MB/S ,如果超過了,說明網絡有問題。
?
?
?
2.9??? 壓力機所能承受的用戶數
壓力機所能承受的用戶數:400左右。 如果過多的話,壓力機的內存和cup 和網絡就承受不住。
?
?
?
2.10? io讀寫
io讀寫:如果數據交互特別多的話,io讀寫就耗費大。 Nmon上的線合并在一起,就說明磁盤不夠用的了,讀寫后沒有及時釋放。
?
?
?
2.11? 集群環境配置參數:
4個cpu 8核。
?? ?平臺jvm最大內存8G。
JDBC池最大600。
JAVA進程池最大600最小400。
網絡是:1000M
數據庫session連接數,4000 。
JTA :3000
粘滯超長時間:216000
2.12??????? 確定響應時間正確:
? 正在并發時,在ie瀏覽器中做一次操作,看一下響應時間是否與LR分析出來的差不多。
?
2.13? sql分析
?? 當軟硬件配置都沒什么問題時,響應時間過長或是通過事物數折線圖不正確時,需要看一下awr報告中數據庫的sql腳步執行時間。
?
?
2.14? 通過事物數與并發數成正比。
?
2.15? 硬件配置
Nginx要單獨裝一臺機器,不然會影響應用服務器的性能。各節點要分開到虛擬機上。反向代理。
?
?
2.16? 數據庫優化(oracle)
目前可以調整的主要是數據庫內存配置和最大連接數的基本配置,提高并發處理效率。
在進行測試時監測會話及連接等信息
Select?*?from?v$session;
Select?*?from?v$session?where?status=’ACTIVE;
Select?*?from?v$process;?
Select?*?from?v$locked_object;?
?
建議調整
SGA參數Data?buffer,將其盡可能的調大些。避免重復查詢的磁盤I/O操作。
?
調整PGA參數設置原則:
SGA+PGA+OS使用內存<總物理RAM。在調試過程中可以觀察PGA緩存設置命中率:
select?value?from?v$sysstat?where?name?='physical?reads';?
SQL>?select?value?from?v$sysstat?where?name?='physical?reads?direct';?
SQL>?select?value?from?v$sysstat?where?name?='physical?reads?direct?(lob)';?
SQL>?select?value?from?v$sysstat?where?name?='consistent?gets';?
SQL>?select?value?from?v$sysstat?where?name?=?'db?block?gets';?
?
?
?
?
3?????? LR問題集
4.1????????????? 另一個程序正在運行
也許大家遇到過這樣的問題,如圖:
解決方法:打開任務管理器:找到這個進程:ThumbProcess.exe,關掉這個進程即可解決。
?
4.2????????????? 事物響應時間一直處于直線狀態。
解決方法:參數化設置成Unique ;
腳步中去掉EXTRARES下面的URL下載;
場景運行時設置忽略思考時間和log日志時間。
?
?
4.3????????????? 運行時,有部分用戶一直結束不了
? 換個LR 試試。 或者是卸載了重新裝一個英文版的, 中文版的好出這種問題。
?
4.4????????????? 腳本中產生多次請求
1.??? 使用loadrunner進行錄制腳本之后,可以看到的在腳本有一個請求,會產生兩次
2.??? 進行點擊錄制的按鈕,進入到錄制選項中,進行點擊option按鈕。
3.??? 進行點擊列表中的port mapping中選項按鈕。
4.??? 然后在network port mapping中已經被選擇為了socket level and winnet data,進行點擊
5.??? 彈出了下拉菜單中進行選擇為socket level data的選項。
6.??? 6
在此重新錄制腳本之后可以看到的在腳本只有一個請求的腳本的。
?
4?????? LR 實例分析
4.1????????????? 查詢數據庫的進程數。
現在已經超載了,所以weblogic建連接池建不了。程序報錯。
Show parameter process;
Select count(*) from v$process;
?
?
?
5?????? 數據庫分析
?
?
6?????? 完成一個腳本時間
1)? 錄制腳本:去掉驗證碼、錄制腳本、參數化、關聯、事物、檢查點、調試。一個簡單的登陸15分鐘。復雜的就看情況而定。
2)? 場景運行:10個運行一次6分鐘,50并發運行一次7分鐘。100并發運行3次,24分鐘。一切順利的話,一個小時完成。因為腳本稍微中間要暫停幾分鐘,釋放一下資源。
3)? 分析結果:nmon報告、awr報告、lr分析結果。
4)? 總結就是一個簡單的登陸,順利的話1個小時左右就完成了。
?
?
?
7?????? 性能調優
需要現場提供的測試數據
?
7.1????????????? 服務器本身
機器的種類,內存,swap空間,和CPU的數量(核心數),
調整系統socket打開數,建議將open?file?size?也調大一些。
?測試系統I/0?是否存在I/O問題。
?
7.2????????????? Jvm?參數優化(weblogic啟動jvm內存設置)
?啟動weblogic時設置jvm參數大小
?set?JAVA_OPTS=-Xms4096m?–Xmx8192m?
需要確定當前系統物理內存和jdk版本及位(64?or?32)
,
如果當前內存配置大于上述配置可先忽略。
?
7.3????????????? weblogic
調優參數對Weblogic的調優主要從SEVER、ExecuteQueue、JDBC等幾個方面的相關參數進行調優:
?一、SERVER
?在mydomain->Servers->myserver->Configuration->Tuning->“Enable?Native?IO”中:
?1、Native?IOEnabled? TRUE,表示該Server使用本地I/O?
2、SocketReaders?設置在執行線程中專用做Socket?Readers的百分比
3、Maximum?Open?Sockets?最大打開Socket數
?4、Stuck?Thread?MaxTime
?堵塞線程時間,超過這個時間沒有返回的執行線程,系統將認為是堵塞線程。如果weblogic認為某個隊列中的所有的線程全部堵塞的話,weblogic將會增加執行線程的數量。注意:執行線程的數量一旦增加,目前weblogic不會去減少他,如果增加了一些線程以后再次出現
overflow的警告,weblogic會繼續增加執行線程的數量,一直到達到上限為止。
?例如可以改成:默認600?改成1200?
5、Stuck?Thread?Timer?Interval?
系統檢查堵塞線程的時間間隔
6、Low?Memory?GC?Threshold?
當可用內存小于該百分比時,垃圾回收啟動
7、Low?Memory?Granularity?Level?
當兩次檢測的可用內存變化超過該百分比時,垃圾回收啟動
8、Low?Memory?Sample?Size?
在一次檢測中的取樣次數
?9、Low?Memory?Time?Interval?
檢測間隔時間
10、Accept?Backlog?
等待隊列中最多可以有多少TCP連接等待處理,如果在許多客戶端連接被拒絕,而在服務器端沒有錯誤顯示,說明該值設得過低。如果連接時收到connection?refused消息,說明應提高該值,每次增加25%
?
7.4????????????? ExecuteQueue
?在mydomain->Servers->myserver?->Monitoring->Monitor?all?Active?Queues...?
->Configuration->weblogic.kernel.Default->?
?
1、ThreadCount?
服務器初始創建的執行線程的數量,設置原則:
增大機器的最大并發線程數使處理器利用率達到最大,并發線程數理論上等于,夠用即可,過大會降低系統性能。建議:查看當前配置,確定當前系統cpu核心數,可按每核心支持
20線程數進行配置。11g可能需要通過修改xml配置文件進行設置。
?2、QueueLength?
在等待隊列里的請求數,理想狀態下是0?
?3、QueueLength?Threshold?Percent?
一個百分數,當request的數量達到隊列長度的這個比例的時候,weblogic會發出overflow
的標志信息
?4、ThreadsIncrease?
如果weblogic發出overflow的標志信息,weblogic會嘗試增加這個數量的執行線程,以解決
處理矛盾
?5、ThreadsMaximum?
最大執行線程數
?6、Threads?Minimum?
最小執行線程數
7、ThreadPriority?
線程優先級
?
7.5????????????? JDBC
在service->JDBC->?JDBC?Connection?Pools->Configuration->name->Connections?
1、Initial?Capacity?
初始數據庫物理連接數
?建議設置為15-20之間
?2、MaxCapacity?
最大數據庫物理連接數
?根據數據庫本身所支持的最大連接數進行設置,建議設置為數據庫最大連接數的80%。
?3、Capacity?Increment?
每次數據庫物理連接增加數
?4、Statement?Cache?Type?
prepared?statements緩存的策略,LRU算法在有新的語句到來時,將最不經常被用得語
句調整出緩存。FIXED算法為先進先出的算法
?5、TestConnectionsOnReserve?
?TestConnectionsOnReserve設置為false(缺省設置)。如果此參數設置為真(
true),則在連接被分配給調用者之前,都要經過測試,這會額外要求與數據庫的反復連接
?6、Statement?Cache?Size?
宏語句設定的靜態緩存,大小由JDBC連接池配置時指定,調整這個數值的大小,有利于提高系統的效率調整緩存大小:
?7、Login?Delay?
創建數據庫物理連接時的延時時間
?
7.6????????????? ?監控日志
?1、server?log?
系統啟動及運行過程中的日志,可在weblogic管理端中進行配置。
?2、access?log?
7.7????????????? ?數據庫優化(oracle)
?目前可以調整的主要是數據庫內存配置和最大連接數的基本配置,提高并發處理效率。?在進行測試時監測會話及連接等信息
?Select?*?from?v$session;
?Select?*?from?v$session?where?status=’ACTIVE;
?Select?*?from?v$process;?
Select?*?from?v$locked_object;?
?
建議調整SGA參數Data?buffer,將其盡可能的調大些。避免重復查詢的磁盤I/O操作。
?調整PGA參數設置原則:SGA+PGA+OS使用內存<總物理RAM。
?在調試過程中可以觀察PGA緩存設置命中率:
?select?value?from?v$sysstat?where?name?='physical?reads';?
SQL>?select?value?from?v$sysstat?where?name?='physical?reads?direct';?
SQL>?select?value?from?v$sysstat?where?name?='physical?reads?direct?(lob)';?
SQL>?select?value?from?v$sysstat?where?name?='consistent?gets';?
SQL>?select?value?from?v$sysstat?where?name?=?'db?block?gets';
?
?
8?????? 錯誤日志總結
7.1????????????? 錯誤-27727
Action.c(13):錯誤-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
解決方案:修改“運行時設置-HTTP請求連接超時、HTTP請求接收超時”的值為600s或者更長時間
7.2????????????? 錯誤-27796
Action.c(39):錯誤-27796:連接服務器“test0105.s1.diy.com:80”失敗: [10061] Connection refused
有可能是服務器有太多的數據庫連接,提示連接被拒絕
解決方案:
可以讓開發嘗試調整:
1).數據庫最大連接數;
2). tomcat的最大并發數限制
7.3????????????? 錯誤-27791
Action.c(9):錯誤-27791:服務器“test0105*.s1.diy.com”已過早關閉連接
訪問時已經下載不到資源了,有可能是已經達到服務器資源的瓶頸了,可以查看服務器資源如CPU、負載等
4. Error -27791
Action.c(7): Error -27791:Server"10.10.0.88" has shut down the connection prematurely
借鑒51Testing網友提供的解決方案:
1)、應用服務器死掉。小用戶時程序上的問題,程序上處理數據庫的問題
2)、應用服務沒有死。應用服務參數設置問題。例如:在許多客戶端weblogic應用服務器被拒絕,而在服務器端沒有錯誤顯示,則有可能是weblogic中的server元素的acceptbacklog屬性值設得過低。如果連接時收到connection refused消息,說明應提高該值,每次增加25%。
3)、數據庫的連接
在應用服務的性能參數可能太小了
數據庫啟動的最大連接數(跟硬件的內存有關)
4)、有時關閉防火墻如卡巴斯基也會解決如上問題
?
7.4????????????? ? Error -27727Step 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、在程序處理表的時候檢查字段太大或多
?
7.5????????????? 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"選項,再回放是否成功。
?
7.6????????????? Error -27791
Server“192.168.1.77″ has shut down the connection prematurely
解決方案如下:
1、應用服務器死掉。小用戶時程序上的問題,程序上處理數據庫的問題
2、應用服務沒有死。應用服務參數設置問題。例如:在許多客戶端weblogic應用服務器被拒絕,而在服務器端沒有錯誤顯示,則有可能是weblogic中的server元素的acceptbacklog屬性值設得過低。如果連接時收到connection refused消息,說明應提高該值,每次增加25%。
3、數據庫的連接在應用服務的性能參數可能太小了,數據庫啟動的最大連接數(跟硬件的內存有關)
4、有時關閉卡巴斯基也會解決如上問題
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自身造成的問題。把時間調長,就是為了,定位問題在什么地方,而不是為了繞過這個錯誤的出現。
?
7.7????????????? Error -27492
"HttpSendRequest" failed, Windows error code=12002 andretry limit (0) exceeded for URL
在runtime setting中的preferences-->options-->http-request connect timeout(sec)的值設為999。
?
7.8????????????? 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">"InternetProtocol:Preferences"中,單擊"options",增加"HTTP-request connect timeout" 或者"HTTP-requestreceive"的值。
7.9????????????? Error -26612
HTTP Status-Code=500 (Internal Server Error)
?forhttp://192.168.0.8:10001/logonConsole.do;jsessionid={JSESSIONID2}
造成HTTP-500錯誤,有朋友告訴我如下幾個可能:
1、運行的用戶數過多,對服務器造成的壓力過大,服務器無法響應,則報HTTP500錯誤。減小用戶數或者場景持續時間,問題得到解決。
2、該做關聯的地方沒有去做關聯,則報HTTP500錯誤。進行手工或者自動關聯,問題得到解決。
3、錄制時請求的頁面、圖片等,在回放的時候服務器找不到,則報HTTP500錯誤,若該頁面無關緊要,則可以在腳本中注釋掉,問題將會得到解決。例如:有驗證碼的情況下,盡管測試時已經屏蔽了,但是錄制的時候提交了請求,但回放的時候不存在響應。
4、參數化時的取值有問題,則報HTTP500錯誤??蓪祷斜碇械臄抵?#xff0c;拿到實際應用系統中進行測試,可排除問題。
5、更換了應用服務器(中間件的更換,如tomcat、websphere、jboss等),還是利用原先錄制的腳本去運行,則很可能報HTTP500錯誤。因為各種應用服務器處理的機制不一樣,所錄制的腳本也不一樣,解決辦法只有重新錄制腳本。
6、Windows xp2 與ISS組件不兼容,則有可能導致HTTP500錯誤。對ISS組件進行調整后問題解決。
7、系統開發程序寫的有問題,則報HTTP500錯誤。例如有些指針問題沒有處理好的,有空指針情況的存在。修改程序后問題解決。
查找后臺日志發現報了很多0ra-01000錯誤,這是Oracle達到最大游標參數值,google了下,最大原因可能是JDBC連接沒關閉。最后查找weblogic連接池出了問題,很多連接沒關閉。
?
7.10??????? Error -27496
內部錯誤(呼叫客戶服務): _eStat (7) !=LRW_ITEM_STAT_ENUM_UNHANDLED for HandledTask at 048E180C
?
7.11??????? Error -27995
Requested link ("Text=計劃管理") not found [MsgId: MERR-27995]
方法:在IE中的工具—>Internet選項—>高級—>HTML設置中選擇第二個腳本類型.
?
7.12??????? Error -27279
內部錯誤(呼叫客戶服務):Report initialization failed , error code =-2147467259 [MsgId : MERR-27279 ]
建議重裝一下LR.這種問題有可能和你安裝有關.dll文件出錯不是說寫的程序就能修改的.
?
7.13??????? Error -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調大(如果這個值不是最大值的話)。
?
7.14??????? Error -10489
Exception was raised when calling per-thread-terminate function
在用Loadrunner實施性能測試時,采用Goal模式加壓,存在如果持續長時加壓時LoadRunner的Controller會報 Error -10489 : Exception wasraised when calling per-thread-terminate function錯誤;
問題產生原因:
Unlike the earlier Windows versions, Windows 2000 and Windows XP have thedefault environment set to C:\Document and Settings\<user-name>\LocalSettings\Temp instead of C:\Windows\temp. This long path with a space can causeseveral problems for LoadRunner. To resolve the issue, change to a directorywithout 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. Errorcode : 10054”
這是因為,下載的速度慢,導致超時,所以,需要調整一下超時時間,方法如下:
在Run-timesetting窗口中的‘Internet Protocol’-‘Preferences’設置set advanced options(設置高級選項),,重新設置一下“HTTP-requestconnect timeout(sec)”
2> 問題描述:
Error:Failed to connect to server“192.168.2.192”:[10060]Connection
Error:timed out Error:Server“192.168.2.192”hasshut down the connection prematurely
原因:
1> 應用訪問死掉
小用戶時:程序上的問題。程序上存在數據庫的問題
2> 應用服務沒有死
應用服務參數設置問題
例如:
在許多客戶端連接Weblogic應用服務器被拒絕,而在服務器端沒有錯誤顯示,則有可能是Weblogic中的server元素的AcceptBacklog屬性值設得過低。如果連接時收到connection refused消息,說明應提高該值,每次增加25%
Java連接池的大小設置,或JVM的設置等
3> 數據庫的連接
在應用服務的性能參數可能太小了
數據庫啟動的最大連接數(跟硬件的內存有關)
3> 問題描述
Error:Page download timeout(120seconds)has expired
分析原因:
應用服務參數設置太大導致服務器的瓶頸
頁面中圖片太多
在程序處理表的時候檢查字段太多
?
7.15??????? Error -27492
"HttpSendRequest" failed, Windows error code=12002 andretry 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)
?
7.16??????? Error -27279
內部錯誤(呼叫客戶服務):Report initialization failed , error code =-2147467259 [MsgId : MERR-27279 ]
警告:擴展 LrXml.dll報告在調用函數ExtPerThreadInitialize時出現錯誤 -1
錯誤: Vuser初始化擴展 LrXml.dll失敗。
Vuser Terminated.
建議你重裝一下LR.
這種問題有可能和你安裝有關.dll文件出錯不是說寫的程序就能修改的.
?
7.17??????? Error -10061
Connection refused
在用loadrunner進行并發測試時,[10061]Connection refused,是服務器拒絕,一種方案是調整服務器的請求數。但是,有時候是服務器拒絕對同一個ip的多次請求,這時調整服務器不好實現,可以財用ip欺騙來防止10061的產生,這也是本文討論的主題。
Ip欺騙的步驟:
1。添加ip,2種方法:1種方法是使用loadrunner的Ip Wizard進行----打開ipwizard后按提示進行操作,沒什么問題,只是需要重起下機器(小技巧:如果你在使用前,把loadrunner關閉,把agent關閉,把網卡禁用,然后使用Ip wizard后再去啟動網卡、agent,則可以不重起機器);還一種方法是自己手動添加,打開本地連接,打開Tcp/ip設置(我相信能看到這的人是打開這些是不成問題的),打開高級,然后添加ip。
2。在Controller里設置ip欺騙:在Controller中點擊菜單scenario,選擇"Enable Ip Spoofer",這就打開了Ip欺騙,對于Ip欺騙的設置,先在菜單Tools下選上"Expert Mode"選項用于打開專家模式(感覺沒有什么特殊,無非就是是后面的Options彈出的對話框多了幾個選項卡),然后選擇Tools下的Options,打開對話框,找到General,這時可以選擇Ip欺騙的方式:為每個Process還是Thread產生ip。
3。設置場景時,多設計幾組VUser(可以是針對一個叫本,每組Vuser使用一個ip,這樣又多少組就是用多少組ip)。
Ok,運行場景吧,這時發出去的包是進行Ip欺騙的,想要驗證的話,不妨把下面的代碼放入你的叫本任意位置(當然是要能執行到的位置,不妨放在Action的開始部分,對腳本的運行沒有影響):
char *ip=lr_get_vuser_ip();
if(ip){
lr_log_message("The ip address is %s",ip);
}else{
lr_log_message("IP spoofing disabled");
}
然后在運行場景前,選擇幾組Vuser,在后邊點擊"Run-TimeSetting"進行設置,這里要設置的是General--〉Log下,選中Enable Logging和Always send messages,這樣運行場景后你可以查看Vuser使用的Ip(在運行場景后,點擊"Vusers...",打開Vuser信息,在彈出框左上找到Log日志按鈕,然后可以看到該組Vuser的運行信息,在里面可以看到使用的ip信息)。
補充:這么做是在發包時進行欺騙,但是網卡的MAC地址不會變,如果發出去的包經過DHCP(動態路由)時,欺騙就被揭發了--總之就是不成功了,因為DHCP服務器 會根據package來自的mac地址在dhcp路由器中的ip影射表里找到網卡的真實ip然后轉發出去(含有個人推測,若有錯誤,請糾正),因此如果被測試的服務器在外網而你所在的網段使用了DHCP路由,我也沒脾氣了(暫時不知道怎么處理),但是如果被測服務器和你在同一個網內,ok,可以解決,思路:把服務器的網關地址指向你的測試機器,然后使用不同于局域網中的網段,例如:公司使用的是DHCP,并且使用192.168.0.X的網,可以把測試機器ip改成192.168.10.1,掩碼255.255.255.0,網關指向自己192.168.10.1,然后把被測服務器ip改成:ip192.168.10.250,掩碼255.255.255.0,網關192.168.10.1,ok,在測試機器上添加ip,使用192.18.10.X,然后開始測試吧。
?
7.18??????? LoadRunner腳本中出現亂碼
在錄制Web協議腳本時出現中文亂碼,在回放腳本時會使回放停止在亂碼位置,腳本無法運行。
錯誤現象:某個鏈接或者圖片名稱為中文亂碼,腳本運行無法通過。
錯誤分析:腳本錄制可能采用的是URL-based script方式,如果程序定義的字符集合采用的是國際標準,腳本就會出現亂碼現象。
解決辦法:重新錄制腳本,在錄制腳本前,打開錄制選項配置對話框進行設置,在"Recording Options"的"Advanced"選項里先將"Surport Charset"選中,然后選中支持"UTF-8"的選項。
?
7.19??????? LoadRunner HTTP服務器狀態代碼
在錄制Web協議腳本回放腳本的過程中,會出現HTTP服務器狀態代碼,例如常見的頁面-404錯誤提示、-500錯誤提示。
錯誤現象1:-404 Not Found服務器沒有找到與請求URI相符的資源,但還可以繼續運行直到結束。
錯誤分析:此處與請求URI相符的資源在錄制腳本時已經被提交過一次,回放時不可再重復提交同樣的資源,而需要更改提交資源的內容,每次回放一次腳本都要改變提交的數據,保證模擬實際環境,造成一定的負載壓力。
解決辦法:在出現錯誤的位置進行腳本關聯,在必要時插入相應的函數。
錯誤現象2:-500 Internal Server Error服務器內部錯誤,腳本運行停止。
錯誤分析:服務器碰到了意外情況,使其無法繼續回應請求。
解決辦法:出現此錯誤是致命的,說明問題很嚴重,需要從問題的出現位置進行檢查,此時需要此程序的開發人員配合來解決,而且產生的原因根據實際情況來定,測試人員無法單獨解決問題,而且應該盡快解決,以便于后面的測試。
?
7.20??????? LoadRunner請求無法找到
在錄制Web協議腳本回放腳本的過程中,會出現請求無法找到的現象,而導致腳本運行停止。
錯誤現象:Action.c(41):Error -27979: Requested form not found [MsgId: MERR-27979]
Action.c(41): web_submit_formhighest 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"的"InternetProtocol"選項里的"Recording"中選擇"Recording Level"為"HTML-basedscript",單擊"HTML Advanced",選擇"Script Type"為"A scriptcontaining explicit"。然后再選擇使用"URL-basedscript"模式來錄制腳本。
?
7.21??????? LoadRunner不執行檢查方法
在錄制Web協議腳本中添加了檢查方法Web_find,但是在腳本回放的過程中并沒有執行。
錯誤現象:在腳本中插入函數Web_find,在腳本中設置文本以及圖像的檢查點,但是在回放過程中并沒有對設置的檢查點進行檢查,即Web_find失效。
錯誤分析:由于檢查功能會消耗一定的資源,因此LoadRunner默認關閉了對文本以及圖像的檢查,所以在設置檢查點后,需要開啟檢查功能。
解決辦法:打開運行環境設置對話框進行設置,在"Run-time Settings"的"InternetProtocol"選項里的"Perference"中勾選"Check"下的"Enable Image andtext check"選項。
?
7.22??????? LoadRunner回放Web Services協議腳本錯誤
LoadRunner 8.0版本在錄制Web Services協議的腳本時正常,但在回放時會出現錯誤,提示停止腳本運行。
錯誤現象:利用LoadRunner8.0版本來錄制Web Services協議的腳本沒有任何錯誤提示,回放腳本時會出現如下錯誤提示"Error:server returned an incorrectlyformatted SOAP response"。
錯誤分析:出現此錯誤的原因是LoadRunner8.0在錄制Web Services協議的腳本時存在一個缺陷:如果服務器的操作系統是中文的,VuGen會自動將WSDL文件的頭改為<?xmlversion="1.0"encoding="zh_cn" ?>,所以才會有此錯誤提示。
解決辦法:下載兩個補丁,分別為"LR80WebServicesFPI_setup.exe"和"lrunner_web_services_patch_1.exe"安裝上即可。
http://wenku.baidu.com/view/a576eb0a79563c1ec5da71c8.html
?
7.23??????? 業務
進入借款單(顯示借款單列表),新建借款單,新建后顯示借款單列表(新建的借款單在此列表中有顯示)
我是錄制的腳本,可運行時,提示 Action.c(112):錯誤-26627:對于“http://192.168.1.105:8080/T3/fee/feeLoanList.action”,HTTP狀態代碼=404 (Not Found)
解決:
說兩點:
1.手動正常未必就真正常,LR加壓的時候可能連接數占滿了,所以出404
2.還有一種情況,腳本里有檢查語句,叫什么lr_check還是什么的,就是一個腳本內部檢查是否有該資源用的,不見著他我拼不出來,如果有,注釋掉看看
?
7.24??????? 在Controller里運行腳本,運行一段時間以后出現如下error messages
1. Code -60990 Error: Two Way Communication Error: Function two_way_comm_post_message /two_way_comm_post_message_ex failed.
2. Code -29739 Error: Service client with id=1 failed to post a message, reason -communication error.
3. Code -16895 Error: Failed to post xdr buffers data array by post_ex.
4. Code -10343 Error: Communication error: Cannot send the message since reached theshared memory buffer max size.
問題誘因1:
共享內存緩存溢出,造成Controller和Load Generator之間通訊出現問題。
解決方案:
修改兩個配置文件。
1.$installation folder$\dat\channel_configure.dat
2. $installationfolder$\launch_service\dat\channel_configure.dat
在這兩個文件中的[general]部分下添加如下配置。
shared_memory_max_size=100(修改共享內存為100MB,默認是50MB)
重新啟動Controller,問題解決。
問題誘因2
打開 controller中的 diagnostics菜單,點掉復選框..步驟如下圖
2. 點掉 Enable the following diagnostics
轉載于:https://blog.51cto.com/13693838/2095928
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的总结——LR学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js的运行机制问题
- 下一篇: 利用dynamic简化数据库的访问