效能測試工程師可以比作為醫生,看病象,定位**。下面分享幾個實際專案中的效能分析案例
。一
: 某專案元件同步鎖
導致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...