什麼,專案「生病了」?我來看!

2021-08-10 18:28:56 字數 2850 閱讀 5255

效能測試工程師可以比作為醫生,看病象,定位**。下面分享幾個實際專案中的效能分析案例

: 某專案元件同步鎖

導致tomcat

執行緒大量阻塞

現象:

100併發,

某個提交

事務響應時間很長(7

秒左右),

其他事務響應時間正常。且存在偶爾報錯

(因日誌

配置有問題,後台看不到錯誤日誌)。

lr報錯

顯示:error -26612: http status-code=500 (internal server error) for…

定位

:1. 伺服器

記憶體,cpu,io 都正常

,也排除資料庫的原因。2.用

jstack

檢視執行緒資訊,

發現有大量tomcat執行緒阻塞,阻塞資訊截圖如下:

3. 根據

提示資訊

找到對應元件ark-workflow-1.0 jar

(可從部署的伺服器

獲取jar

包),進行

反編譯檢視w

orkflowutils**,

發現乙個

synchronized

**塊。如下

4. 結合

前面的執行緒堆疊資訊應該這裡同步

鎖導致執行緒阻塞。

二:

某專案測試

指令碼關聯不到位導致

請求響應慢

(自己埋的坑

…)現象:

20併發,

某個審核

事務響應時間很長

,9s左右,

其他事務響應時間正常。

定位

:1.

一開始以為跟

問題一的提交事務

相似原因,但檢視執行緒快照正常。

2. 匯出awr報告

,發現有

大量enq: tx - row lock contention

事件。

pfmc

_plan_group

行鎖很嚴重

3. 查資料看了

下導致enq: tx - row lock contention

的原因:

第一種情況,是真正的業務邏輯上的行鎖衝突,一條記錄被多個人同時操作如同時更新。這種鎖對應的請求模式是6。

第二種情況,是唯一鍵衝突,就是如主鍵字段相同的多條記錄同時插入。這種鎖對應的請求模式是4。這也是應用邏輯問題。

第三種情況,是bitmap索引塊上更新衝突,就是多個會話同時更新

bitmap

索引上同乙個資料塊.4

. 另外

發現有條sql執行特別慢,是

update

pfmc

_plan_group表的

,where條件

就是唯一索引id

。按測試

場景來說這種情況不應該出現,猜測自己指令碼有問題。5

. 看了

下審核請求的post

請求引數,果然group id

是個固定值,

未做關聯

(請求引數太多,看花了眼…)

6. 修改後重新壓

了下,問題解決。

三:某專案附件上傳rest介面併發問題

現象:

該介面在併發時,請求返回正常,但 rest服務後台報異常,錯誤日誌如下:

問題定位

:1. 

檢視上傳的格式是否正確,結果是正確。(日誌裡有顯示「not

a jpeg

file」);

2. 檢視介面**,找到相關**,看到下面有的**,猜測是刪導致的,然後看到上面給名變數賦的值是固定的,確定是併發時刪同名檔案引起的。

3. 上面猜測驗證:基準測試重新跑一遍,檢視後台日誌(介面結果不能體現錯誤

),發現一切正常,無報錯。再併發

5路跑一遍,後台日誌報以上

錯誤。說明這個

問題只會

在併發的時候出現

專案交付為什麼失敗? 記我在某個專案中的迷思

上個專案接近尾聲,我以developer的身份加入了現在的專案,姑且叫做專案a吧。說實話a專案蠻神奇的,幹了一年多了只有一次release,8月初要進行第二次release了,但是測試環境還未搭建好。該專案是個分布式團隊,分布在成都和澳洲兩個地方。由於成都這邊團隊都是清一色的developer,沒有...

我為什麼做一名專案經理?

用時1天時間,將 漫畫中國式專案管理 快速看了一下,這本書都是乾貨。確實需要有點專案管理經驗的人才看的明白。我的意思不是文字理解不了,而是理解的沒有那麼刻骨銘心。為什麼選擇做一名專案經理。各位專案經理們可能有一萬的不同的理由。但是我還是要和專案經理說一聲 佩服你們的勇氣 在企業中,專案經理只是乙個因...

明明開發時間很趕,我為什麼還要重構整個專案

首先談為什麼要進行重構吧,畢竟已經維護了兩年了,大大小小也經歷了很多次迭代開發,為何這次會進行重構呢?這要先交代一下我們這個介面專案是咋回事。controlers 控制器層 models 模型類層 common 公用函式 config 配置檔案目錄 libs 基礎類庫 ext 第三擴充套件 inde...