- 建立一個MVC專案 計算流量功能
- 使用 Jmeter 測試
- 修改使用 Locker
建立一個 MVC 專案
新增資料表 : 一個紀錄拜訪總計、另一個是瀏覽人次與時間
資料表 :
Controller 裡面程式碼填入 :
public ActionResult Index() { MyCounterEntities db = new MyCounterEntities(); var count = db.BrowserRecords.First(); count.BrowserCount = count.BrowserCount + 1; var nowDate = DateTime.Now; var nowCount = count.BrowserCount; db.BrowserUserRecords.Add(new BrowserUserRecord { DateNow = nowDate, Num = nowCount }); db.SaveChanges(); return View(); }
執行 Jmeter
建立執行緒群組
設定執行緒數量為 200
執行緒群組按右鍵 > 新增 > 取樣 > HTTP 要求
根據 Visual Studio 上專案的 URL 屬性 設定 Http 請求
然後執行 :
可以在檢視結果集可以知道執行結果 :
回到資料庫,查看資料庫情況:
由於同時間存取,有許多筆重複,甚至有 18 之後又變回 17 的情況
雖然有 200 次存取,但只計算到 18
增加 locker
private static object locker = new object(); public ActionResult Index() { lock (locker) { MyCounterEntities db = new MyCounterEntities(); var count = db.BrowserRecords.First(); count.BrowserCount = count.BrowserCount + 1; var nowDate = DateTime.Now; var nowCount = count.BrowserCount; db.BrowserUserRecords.Add(new BrowserUserRecord { DateNow = nowDate, Num = nowCount }); db.SaveChanges(); return View(); } }
使用 lock 之後,已可以順利計算
https://stackoverflow.com/questions/13901048/how-to-lock-an-asp-net-mvc-action
https://ithelp.ithome.com.tw/articles/10186852