一次真實項目性能測試與調優的總結

以下內容來自小強測試品牌培訓班學員作品


現象

因爲公司需要對系統進行壓測,因此使用LR對網站的註冊業務進行壓力測試,在併發量爲7時,出現了以下大量的報錯:

22c700030b8809311976

請請點擊此處輸入圖片描述

分析與解決

首先,解決出現最多的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;

213f00043d65eaefd14e

運行LR不再報503的錯誤;高併發下事物通過率也是百分百。那是我感動的淚水。。。

小強點評:

通過引導學會了利用關鍵信息進行排查分析,非常贊,並能學一通百,進步很大,再次點贊。很多時候老師是扮演的是一個引導者,並不是萬能的神,更多的其實還是靠大家自己的修行才行。

之後還在壓測中發現個問題,

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException大概和開發聊了一下,應該是註冊業務涉及很多表,表裏可能有設置外鍵,開發排查之後解決掉了,現在基本都非常穩定啦

小強點評:

不恥下問是最腦殘的雞湯,這句雞湯害了多少人失去了主動思考和解決問題的能力?我想大家都心知肚明。遇到問題要學會自己思考並嘗試,之後可以在去探討帶着你的思想。除此之外,現在是團隊合作,每個人都有各自的擅長,不會的不要去較真,找會的人幫忙在學習,別太死板。此處學員發現問題並和開發協商之後解決,非常好!擅長協作是每個測試工程師必備的技能也是最重要的!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章