掛起bug的解決思路

2021-09-30 03:57:11 字數 2072 閱讀 8996

最近在壓力測試下我們出現了一些bug,比較棘手,我在各位思想基礎上總結如下解決辦法。

1:一定要先盡快解決簡單問題,在乾淨基礎上進行測試。

這樣干擾因素會減少,因為壓力情況下出現的bug很棘手。這也是我們把壓力測試放到功能測試後面的原因。

例如修改虛擬池的簡單bug就干擾了現在的壓力下的bug。所以再把這個問題解決後要再次進行壓力測試。

2:解決bug一定要結合當時的測試方法和測試目進行分析。

我們設計了很多壓力測試方法,不是盲目和羅列的,而都是有目的和針對性的。

所以當解決bug時候,不要僅僅看core dump的堆疊,應該結合當時的測試方法,根據測試目的分析bug。這樣才能有針對性地對問題進行處理。

3:對於交織的問題處理

當前兩個地方: ssl session 和 assert(client.fd)出現都可能是產生bug的原因。

ssl session 已經找到解決辦法,我覺得基本可行,但是為什麼還是出問題呢?

所以要採用同樣的測試方法,再次打壓力,如果core dump還是出現在client.fd的地方,基本就是證明client.fd的問題。

如果堆疊地方還是很亂很隨機,則可能是記憶體亂了的問題。

當前要高度懷疑client.fd,這個地方songqinga以前解決過,反覆多次,至少涉及兩個以上交織的bug,對這個地方還是理解不透徹。要仔細分析。

4:要從方**高度來思考和分析。

各位思考過這個問題嗎?為什麼在通常的情況下不出現問題,在高壓力下就出現問題呢?

假設每個進來的連線都是按照乙個單一的流程處理,從原理上講,大量的連線也必然是按照相同的流程處理的。

如果小壓力這個流程正確,則大壓力下這個流程也是正確的。但是實際情況是高壓力下出了問題。

是什麼原因呢?最大的原因就是高壓力下進入了別的異常分支流程中了。

但是為什麼進入別的流程呢?我根據經驗總結起來有如下幾個原因:

a: cpu太忙

cpu太忙,則對後來的連線無法處理。導致進入異常流程。

例如cpu太忙,無法進行大量的rsa計算,導致後面的ssl session無法建立。ssl 握手協議發現在指定timeout內不能建立成功,則進入sslabort中進行異常處理。

b:記憶體分配不成功

系統為每個程序可分配的記憶體都是有限制的。例如每個程序最多不能超過多少頁虛擬記憶體。

同時對記憶體分配的速度也是有限制的,假設你在乙個迴圈中不斷malloc,發現失敗概率就很高,如果加乙個間隔延遲,則基本都能分配成功。

所以當大量連線到達的時候,要麼記憶體不夠用,要麼因為分配速度過快,導致失敗。

所以要對每個記憶體分配的地方要做檢查。

c:每程序資源限制(例如連線限制)。

系統預設對每個程序都是有資源限制的。

通過ulimit 可以顯示和限制每個程序的資源。例如限制最大的可開啟的控制代碼或者可允許建立的最大連線。

當連線過多,達到這個限制,則tcp連線建立失敗,則進入異常流程。

所以要研究ulimit的限制,從每個限制地方入手,尤其是連線限制。所以說即使系統資源夠用,但是每個程序的還是有限制的。

當然有人可能說,我們可以通過操作ulimit來讓系統資源最大為我所用。這個思路是對的。但是要從整體考慮分配資源。

但是這樣也解決不了壓力bug問題,因為只要壓力足夠大,還是能達到你的最大值的。

所以要對可接受處理的資源進行限制,不能超過 ulimit的限制,這也是一條思路。乙個系統沒有容量限制是要出問題的。

所以看來設計乙個高效能高穩定性,能承受高壓力的系統還是具有很大挑戰性的。

5:根源和具體bug並進

通過方**能分析出根源,但是根源能產生很多分支,所以要從根找到具體bug的工作量很大。但是從根上找就可能一勞永逸。

從具體bug上來找,可能最後難於找到根源,只能就事論事,導致最後還是疲於奔命。

所以我們要從兩方面並進,匯合,這樣代價更小,效率更高。

我個人經驗有限,思維可能有侷限性,所以需要借助眾人的智慧型想出更完善和徹底的方法,希望各位多提建議。

也希望向博和zhailang能把交換機方面對高壓力情況下bug的處理的一些經驗介紹給我們。或者找到具體精通的人給我們做一些解答。

可能應用層的高壓力處理和網路層的高壓力處理有一定差別,但是一些思想還是可以借鑑的。

解決bug思路分享

老師今天講了rbac元件,簡單來講就是把關係,系統校驗等工作和業務 分離開來,更多參考自 自己寫的時候遇到幾個問題,以下是遇到問題的解決辦法和思路分享 uniqueid models.onetoonefield userinfo,on delete models.set null,blank tru...

頁面bug修復思路

最近寫了兩個頁面,真有點心力交瘁!頁面bug巨多,都有點把自己給嚇倒了,重點是bug還是自己寫的,悲哀!由於布局做的不太好 導致到後面樣式有點不受控制。頁面不能按百分比的鋪滿整個螢幕,只能是多少內容就有多大。有點變形見諒 除錯了挺長時間,原因倒是找到了,是div有個樣式,它固定了高度導致我在我在加百...

移動端BUG排查思路

2020年 是我做測試的第7年,也是做移動端測試第7年。現分享分享下移動端bug排查思路 一 輔助工具 fidlder charles 移動端測試的吃飯工具,用於抓去http請求後,然後進行各類分析及操作 二 熟悉並了解常見http碼 比如 抓包看到請求 404 那就是資源不存在。那就3種可能 1 ...