- 建立一個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
