2013-02-18 153 views
0

實踐挑戰: 我有一個LR腳本,針對被模擬的應用運行,但沒有註銷按鈕(還)。 測試運行正常穩定的響應時間大約爲10分鐘,但在此之後響應時間達到峯值,服務器進入99%的內存使用率並且事務開始失敗。 我懷疑這是由於腳本不會在每次運行後終止這些vuser,並且它會針對未終止的服務器建立大量運行會話。但我可能是錯的。 我希望在競爭業務流程後以編程方式關閉每次運行。 我有紅色的地方web_set_sockets_option(「SHUTDOWN_MODE」,「ABRUPT」)可以用於此,但我想確保這個功能實際上做我想要什麼,'ABRUPT'是什麼意思? 關閉會話有更好的方法嗎?在錄製過程中單擊關閉的瀏覽器不會導致腳本中的任何內容被捕獲。在LoadRunner中關閉連接

+0

好吧,我明白了。該應用程序沒有註銷(照顧會話/關閉它),這是一個錯誤。我會要求我的團隊實施註銷和清理代碼。 – 2013-02-18 20:02:37

回答

0

根據你的問題,我假設你使用的是WEB/HTML協議。我同意,核心問題是你的應用程序的會話應該更優雅,可能會更快過期。但是,爲了在測試時超越這個範圍,你可以試試這個。這不是保證,但過去在處理類似情況時有時對我有用。試着改變你的運行時設置的腳本:
運行時設置>瀏覽器>瀏覽器仿真

請確保您有檢查「模擬在每次迭代新用戶」的盒子。您也可以嘗試在這裏使用其他設置,例如每次迭代清除緩存。這可能會導致每次迭代的網頁的新連接設置,具體取決於服務器的會話設置。再次,這不是100%,但它不時爲我工作。

+0

腳本開頭的web_cleanup_cookies()和web_cach_cleanup()是否與啓用「在每次迭代中模擬新用戶」相同? AND是在VUgen中設置此選項的路徑,並在將腳本上傳至Controller用於構建場景之前保存腳本,或者可以爲整個場景(在整個場景的設置中)設置此設置,如果是,在哪裏要設置? – 2013-04-11 18:06:58

+0

在我的sceenario/VUser腳本中也沒有設置定步。這可能導致這種情況發生嗎?我只用兩個(!)VUsers,所以我的腳本/設置或被測試的應用程序一定有問題。我們已經確定腳本運行速度如此之快,以至於在新的迭代開始之前不會釋放內存(我們假設情況可能如此)。任何沒有步調的想法/經驗可能會導致所描述的pehenomen隨着時間的推移發生,即使是少量的用戶也是如此。 – 2013-04-11 18:32:05

1

這是會話老化的服務器問題。您的網站的服務器管理員可以調整在給定會話中未發生任何活動的超時值。默認情況下,大多數地方都將此設置爲30分鐘。根據需要修改它,而不是採用服務器上的默認值。

此外,如果資源在服務器端不斷累積,但從未釋放,則可能遇到泄漏情況。

+0

好吧,所以'沒有發生在給定會話上的活動'應該被設置爲比整個業務流程所需的更多一點?然後,會話將在'比整個業務流程多一點'之後發佈,對嗎? – 2013-02-18 21:08:57

+0

即使有可用的註銷選項,大多數人也不會註銷。他們只會關閉瀏覽器或轉到其他網站。這將在服務器上留下一組會話變量和附加資源。服務器有一個允許在空閒時間後清除這些信息的設置。我喜歡分析現有的用戶,並發現空閒時間超過第98百分位的值。查看現有用戶(網站日誌)以適當設置您的超時值,以最大程度地降低對用戶的影響。 – 2013-02-19 01:14:28

0

試試這個:

web_set_sockets_option("CLOSE_KEEPALIVE_CONNECTIONS", "1"); 
+0

歡迎來到Stack Overflow!儘管這段代碼可以解決這個問題,但[包括一個解釋](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高您的帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! – kayess 2016-12-13 14:18:54