以下內容來自小強測試品牌培訓班學員作品
現象
因爲公司需要對系統進行壓測,因此使用LR對網站的註冊業務進行壓力測試,在併發量爲7時,出現了以下大量的報錯:
分析與解決
首先,解決出現最多的27796報錯,在嘗試修改註冊表中
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters的兩個鍵值:
TcpTimedWaitDelay --- 1;MaxUserPort ---- 65534;將端口等待時間調小,最大可用端口調大,再次運行LR不再報27796錯誤;
小強點評:
很多朋友遇到錯誤的時候就懵逼了,完全不知道幹啥了,各種十萬個爲什麼。而我一直強調有錯誤不怕,有100個錯誤也不怕,我們最簡單的原則就是解決那個影響大的。
其次,針對大量的503報錯,首先查看了系統報錯日誌,日誌顯示爲:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure,這時想到小強老師上課講的,正好和這個類似,於是調整和timeout相關的參數。重啓mysql後再次運行場景,還是存在大量503錯誤,查找系統日誌還是報相同的錯誤。
小強點評:
此類型錯誤課上講過,本學員很好的聯想到了並嘗試解決。知識根本不在乎多少,而在於是否系統化,學很多東西但根本沒有建立系統化的結構p用都木有!此處調整後並沒有太好的效果。這時候很多朋友又會十萬個爲什麼了,其實大可不必。性能測試好玩的地方就是這樣,需要你慢慢的來分析的,一下就搞定還玩個啥
實在木有頭緒,詢問小強老師後,更改了tomcat的配置,在配置文件中增加參數:
minEvictableIdleTimeMillis、numTestsPerEvictionRun、testOnBorrow等並嘗試進行調整設置之後
不再報鏈接失敗錯誤;
小強點評:
很多人碰到多個問題時候就不會分析了,即使會,分析一個之後解決不了就放棄了。凡事都有方法可循,我們太重視技術而忽略了方法和思維,這也是爲什麼複雜工作只有少數人可以乾的原因之一。而這裏我也是根據分層思維提供的指導,具體還是本學員理解並解決了,必須點贊!我一直覺得教人不單單是教技術,而更要教做這個事情的方法思維,這纔是有價值的。
正當高興之餘,好景不長,一不小心在nginx中看到了這樣一個錯誤:limiting connections by zone "addr", client:..............,這裏理解是同一個ip被限制了鏈接,打開nginx的配置發現裏面確實存在着限制參數:limit_conn_zone $limit zone=addr:1m; 這個參數是限制同一IP對系統進行多次請求,但是壓力機是一臺機子,所以肯定會報錯,在壓力測試時可以將此處都註釋掉,比較重要的一點是,不僅要註釋掉這一句配置,需要將server區中和這個配置有關的limit配置都註釋掉後重啓nginx;
運行LR不再報503的錯誤;高併發下事物通過率也是百分百。那是我感動的淚水。。。
小強點評:
通過引導學會了利用關鍵信息進行排查分析,非常贊,並能學一通百,進步很大,再次點贊。很多時候老師是扮演的是一個引導者,並不是萬能的神,更多的其實還是靠大家自己的修行才行。
之後還在壓測中發現個問題,
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException大概和開發聊了一下,應該是註冊業務涉及很多表,表裏可能有設置外鍵,開發排查之後解決掉了,現在基本都非常穩定啦
小強點評:
不恥下問是最腦殘的雞湯,這句雞湯害了多少人失去了主動思考和解決問題的能力?我想大家都心知肚明。遇到問題要學會自己思考並嘗試,之後可以在去探討帶着你的思想。除此之外,現在是團隊合作,每個人都有各自的擅長,不會的不要去較真,找會的人幫忙在學習,別太死板。此處學員發現問題並和開發協商之後解決,非常好!擅長協作是每個測試工程師必備的技能也是最重要的!