最近在對(duì)Tomcat服務(wù)器的web應(yīng)用進(jìn)行性能測試的過程中,有時(shí)LoadRunner中總會(huì)報(bào)錯(cuò):
Action.c(71): Error -27791: Server "localhost" has shut down the connection prematurely
但是這個(gè)錯(cuò)誤并不是每次測試都會(huì)出現(xiàn),通常在長時(shí)間的測試之后才偶爾出現(xiàn),而奇怪的是在Tomcat的日志中并沒有相應(yīng)的錯(cuò)誤。從出錯(cuò)信息的字面信息來看,應(yīng)該是服務(wù)器由于某些原因關(guān)閉了連接,而Tomcat并不認(rèn)為這是一個(gè)錯(cuò)誤,因此沒有在日志中記錄下來。在網(wǎng)上的搜索中看到,這個(gè)錯(cuò)誤在其他的服務(wù)器如WebLogic、IIS等均有發(fā)生,看來是一個(gè)通用的問題。
在診斷的過程中,發(fā)現(xiàn)Tomcat運(yùn)行界面有時(shí)會(huì)提示:“ 嚴(yán)重: All threads (10) are currently busy, waiting. Increase maxThreads (10) or check the servlet status ”,根據(jù)這一線索對(duì)Tomcat的server.xml中的maxThreads、connectionTimeout參數(shù)進(jìn)行配置,解決了這個(gè)問題。
試驗(yàn)
為了驗(yàn)證這兩個(gè)參數(shù)對(duì)測試結(jié)果的影響,我做了一些試驗(yàn)。
測試場景:一個(gè)測試腳本、20個(gè)虛擬用戶、10次迭代
參數(shù)設(shè)置及相應(yīng)運(yùn)行結(jié)果:?
maxThreads |
connectionTimeout (豪秒) |
錯(cuò)誤個(gè)數(shù) |
5 |
1000 |
16 |
10 |
1000 |
13 |
15 |
1000 |
7 |
20 |
1000 |
0 |
5 |
10000 |
1 |
10 |
10000 |
0 |
15 |
10000 |
0 |
20 |
10000 |
0 |
試驗(yàn)結(jié)論
當(dāng)最大線程數(shù)較少、超時(shí)時(shí)間較短時(shí),出現(xiàn)這個(gè)錯(cuò)誤的次數(shù)就越多;隨著最大線程數(shù)逐步接近并發(fā)用戶數(shù),該錯(cuò)誤逐漸減少。另外,延長超時(shí)時(shí)間也能夠減少錯(cuò)誤的出現(xiàn),但這時(shí)由于請(qǐng)求在處于排隊(duì)狀態(tài),因此會(huì)增加響應(yīng)時(shí)間。
引申
將該結(jié)果應(yīng)用于性能調(diào)優(yōu)中,在一定的負(fù)載壓力下,增加最大線程數(shù)能夠有效的提高服務(wù)器的并發(fā)處理能力,但前提是系統(tǒng)資源如CPU、內(nèi)存等不會(huì)成為系統(tǒng)瓶頸,在不能再提高最大線程數(shù)時(shí),也可以用增加超時(shí)時(shí)間的方法,但這會(huì)造成響應(yīng)時(shí)間的增加。參數(shù)最佳設(shè)置根據(jù)具體應(yīng)用和測試結(jié)果而定。在有條件的情況下,最好就是集群了。
附:
當(dāng)以上錯(cuò)誤出現(xiàn)在用到web_reg_save_param函數(shù)的響應(yīng)中時(shí),會(huì)伴隨著其他錯(cuò)誤:
Action.c(248): Error -26377: No match found for the requested parameter "ClientID". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 10240 bytes, use web_set_max_html_param_len to increase the parameter size
Action.c(248): Error -26374: The above "not found" error(s) may be explained by header and body byte counts being 0 and 0, respectively.
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
