azure儲存壓測的問題 農碼主觀意識太強被坑了

2021-09-09 03:21:41 字數 2082 閱讀 7431

由於公司想把部份業務遷到windowsazure,主要是應用winodwsazure的儲存;在方案中為了體現儲存的可靠性所以對winodwsazure儲存進行了一系列的測試.但在讀取壓力測試環節中發現間歇性出現檔案讀取延時的情況,由於自己在編寫測試應用方面比較善長(年長的農碼),所以把問題歸根於winodwsazure的儲存上.經過和ms技術多次交流和幫助下才把問題明確下來,雖然問題不是程式**產生,但和測試方法構建的測試資料有著關係.下面分享一下個測試過程.

公司希望把**儲存的一些資源放到windowsazure上,總容量大概在3個t左右.出於方案實施嚴緊性考慮所以制定了乙個壓力測試計畫,主要從讀和寫兩方面來考察一下儲存所支援的壓力.寫測試主要是分別寫入:8k,16k,32k,64k,128k不同大小的檔案而讀取測試則隨便獲取寫入的檔案.

在寫入測試的時間還是非常順利,儲存節點的寫入頻寬基本可以達到3gb,壓力寫入測試效果非常理想.但在壓力讀取的時候就出現異常,基本每隔2-3分鐘就會出現讀取延時,其延時時間竟然達到3-6秒.然後又恢復正常...

while (true)

由於測試**非常簡單,而測試機的cpu和記憶體都是比較充足,所以直接把問題指向了儲存節點上.把問題彙總到winodwsazure方面的技術人員,經過對方除錯排查後說程式構建測試的資源url太多了可能是導致程式出現問題的主要原因.

在收到問題後我實在不理解,即使測試url占用大量的記憶體也不可能影響程式執行,畢竟測試伺服器的cpu根本沒有壓力.由於沒有明確是否程式存在問題,所以我試圖找方法來證明是儲存的原因(畢竟公司採用的方案不能隨便了結).通過修改程式把每個環節的執行時候記錄下來.

timeoutlog log = new timeoutlog();

watch.restart();

long index = system.threading.interlocked.increment(ref mindex);

string url = mimages[(int)(index % mimages.count)];

watch.stop();

log.geturltime = watch.elapsed.totalmilliseconds;

log.url = url;

watch.restart();

cloudblob blob = container.getblobreference(url);

blob.downloadtostream(stream);

watch.stop();

log.getblobtime = watch.elapsed.totalmilliseconds;

if (log.getblobtime > 1000 || log.geturltime > 1000)

mqueue.enqueue(log);

system.threading.interlocked.increment(ref mcount);

新增處理時間後明確發現是blob的downloadtostream存在間歇延時的情況,由於這個winodwsazure的api是由官方提供的.所以下了個定論程式不存在問題,應該是儲存方面出現異常,然後郵件winodwsazure技術要求他們幫忙跟進一下.經過溝通對方建議把測試的url裁剪成n小分然後由開啟多個程式進行壓測,這個工作對我來說是比較方便調整,於是就把url拆分成n小份測試,結果沒想到整個測試都非常順利.

.net程式占用大量記憶體後為什麼影響downloadtostream導致延時的問題現在還沒有清楚(畢竟不影響對儲存的考察所以就沒有再研究下去了),由於自己在編寫.net程式有一定經驗,所以開始堅信不是程式方面出的問題...剛開始挺排斥說是資料或程式原因導致的問題.後面拆成n個小檔案的動機也是為了更進一步想證明存在問題.結果論證了我的想法是錯誤的,有時憑某方面的經驗主觀的判斷乙個事情的確是件很不好的方式.以下分享一下winodwsazure儲存的測試結果

winodwsazure單個結點的儲存讀寫還是非常給力的,基本按ms所說的乙個帳號達到3gb的讀寫流量.

補充:說句心理話ms的技術服務真的很倒位,雖然公司還沒有正式購買服務,不過已體會到支援的到位(在這裡謝謝技術支援的徐總)

將壓測的結果儲存 記一次效能壓測

接到乙個需求 乙個應用的效能壓測,在水平擴容後,tps並沒有增加。希望排查下具體問題。症狀表現如下 應用機器為1c1g,k8s負責管理。測試同學在做效能壓測時,發現 4副本和10副本的集群總tps變化不大。首先對壓測方案進行了重新設計 機型先調整為4c8g。單副本壓測,看瓶頸。調整機型,再壓基線。集...

Jmeter壓測過程中的問題

問題一 不同使用者登入,提取token,後續的請求無法請求成功 解決方法 錄製登入請求,在登入請求後加正則提取器,把token提取出來 錄製後續的請求,eg 提交表單。a.在url中加入提取的token b.在請求下加cookie管理器,在管理器中加入提取的token 如果後續有很多請求,每個請求都...

SQL 碼農 建立不輸入引數的儲存過程的寫法

要求 在where中引數上加入function判定,實現沒有傳值的情況下無視單元格輸出資料 格式如下 exec procedure pcid,year,month gocreate procedure pcid int,year int,month int as begin select from ...