1. 程式人生 > >Loadrunner 場景錯誤彙總(二)

Loadrunner 場景錯誤彙總(二)

報錯如下:

Error -27740: WSA_IO_pending

Error -27740: WSA_IO_pending Action.c(198): Error -27791: Server **** has shut down the connection prematurely Action.c(198): Error -27790: Failed to read data from server  *** [10053] Software caused connection abort Action.c(198): Error -27740: Overlapped transmission of request to"www.****"  for URL "****"  failed: WSA_IO_PENDING  Diagnosis: 

    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
");   --------- 經驗------------------------------------------------------------------------ IO Overlapped是一種非同步IO,在socket層,只有少量資料傳送的時候,只要create new thread,send, receive就可以。 但是當資料量增加的時候,要考慮資源的充分利用,也要避免資源的擁塞佇列,如果建立執行緒過多,和CPU記憶體磁碟等資源的互動過多,可能導致擁塞出現。在這時就要考慮資源的擁塞問題了,在socket中有兩種處理的方式:1.IO overlapped 工作方式是這樣的: A:呼叫WSARecv, WSARecvFrom, WSASend, WSASendTo, 或 WSAIoctl.等函式,傳入overlapped引數,表示這個函式要執行這個動作; B:呼叫WSAGetOverlappedResult函式來取資料; C:再執行A,呼叫另一個帶有overlapped的引數另一個執行緒交替處理。 這種方式,可以處理一定量的資料。但是在大資料量的時候,這種處理方式顯示出了先天的不足。因為使用這種方式會建立新的執行緒,這樣勢必增加系統的開銷。當出現成千上萬的執行緒時,系統的開銷已經相當大了,因為要頻繁的在上下文之間切換。所以在socket程式設計裡,這種方式,處理執行緒數不是很大的情況下是比較有優勢的。2.IO completion port 
在winsock2中引入了非同步IO的API:IOCP。其實這裡也是overlapped的理念。但有不同,如下描述: 這種非同步IO的工作方式是:先開一些執行緒,處在hold的狀態下,應用執行緒和completion port關聯起來,當某個執行緒要處理資料時,就與completion port進行通訊,這樣就可以進行socket操作了,這種處理方式就是在剛開始的時候,消耗一些資源開執行緒,處理大資料量的socket通訊,如圖: 這樣一來completion port就可以處理threads和IO Device之間的互動了。 打個比方來說:有很多人早上都去坐地鐵,但是,如果不限制人往站臺走的速度,售票口就要增加很多個才能處理乘客的請求,這樣成本就會增加很多,並且站臺上最後會擠滿了人,最後導致危機出現;而現在,在進入地鐵的時候,加上有序的限流措施,這樣一來售票口不用增加,也可以處理乘客的請求,站臺上就不會有那麼大的壓力。在我的理解中,completion port就有著這麼一個功能。在處理大資料量的時候,它起著維持秩序的作用。 以上為socket在處理資料量較大時的兩種方式。 而在效能測試中,如果開的執行緒過多,可能某些資源不足導致不停的上下文切換,就會有thread得不到資源,從而出現pending。 如果我們關閉了overlapped,就會同步執行。這時如果CPU速度夠快(同時其他資源是足夠用的),是可以處理所有請求,並且不會出現pending的。但是,如果thread開的越來越多,也可能導致CPU處理不了,從而出現CPU頻繁的上下文切換,或者佇列增長。最後出錯。這時,我們可以針對性的來提出解決方案了。

報錯如下:

Action.c(7): Error -27791: Server "10.10.0.88" has shut down the connection prematurely

1)測試的時候最好應用乾淨的測試環境,即:清楚一切可能干擾的物件; 2)如果出了這種錯誤,要認真的去排查錯誤,不單單找找指令碼,或者[b][url=http://www.ltesting.net/html/2/category-catid-2.html]測試工具[/url][/b]的問題,還要查詢一下執行環境,被測物件等其他問題; 3)排查問題的時候一定要仔細認真,有步驟的去排查; 另外關於上面兩個樓主的問題說一下自己的觀點: 1)關於判斷最終訪問是否成功,從本例子來看可能確實成功了,應為VUG回放的機制和control的回放機制是不一樣的,如果需要判斷是否真的成功可以用文字檢查點進行檢查web_find,或者web_reg_find函式;

-27791

執行Controller時遇到這個error: Action.c(7): Error -27791: Server "10.10.0.88" has shut down the connection prematurely 解決方案如下: 1、應用伺服器死掉。小使用者時程式上的問題,程式上處理資料庫的問題 2、應用服務沒有死。應用服務引數設定問題。例如:在許多客戶端weblogic應用伺服器被拒絕,而在伺服器端沒有錯誤顯示,則有可能是weblogic中的server元素的acceptbacklog屬性值設得過低。如果連線時收到connection refused訊息,說明應提高該值,每次增加25%。 3、資料庫的連線 在應用服務的效能引數可能太小了 資料庫啟動的最大連線數(跟硬體的記憶體有關) 4、有時關閉卡巴斯基也會解決如上問題