JMeterを使用してWebアプリケーションをテストしています。私のテストケースは、データベースにレコードを追加することです。次に、「スレッドユーザー数」を20に設定します。これは、20人のユーザーが同時に作業することをシミュレートすることを意味します。次に、テストケースを実行します。しかし、最終的に、システムがデータベースに20レコードを作成せず、代わりにデータベースに13レコードを作成することに気付きました。
なぜこれが起こったのか知りたいですか?私のWebアプリケーションで、レコードの追加メソッドの前に「同期」を追加しなかったため、可能ですか?linqを使用しました。2人のユーザーが同時にサーバーにレコードを作成するリクエストを投稿した場合、どうなりますか?レコードを作成するだけですか、それとも2つのレコードを正常に作成できますか、それとも不明ですか?
以下は、データベースにレコードを作成するためのサンプルコードです。
public int SaveEventGroup(int id, Models.Entities.EventGroup e, Nullable<int> setpublish)
{
try
{
Entities.EventGroup db;
if (id == 0)
{
db = new Entities.EventGroup();
db.CreatedBy = e.CreatedBy;
db.CreateDatetime = DateTime.Now;
db.Status = true;
}
else
{
db = this.GetEventGroup(id);
}
db.NameCN = e.NameCN;
db.NameEN = e.NameEN;
db.NameZH = e.NameZH;
db.NamePT = e.NamePT;
db.DisplayOrder = GetGroupMaxDisplayOrder() + 1;
if (setpublish == null)
{
db.PublishStatus = false;
db.PublishDatetime = null;
db.UpdateDatetime = DateTime.Now;
db.UpdatedBy = e.UpdatedBy;
}
if (id == 0)
dataContext.AddToEventGroupSet(db);
dataContext.SaveChanges();
return db.Id;
}
catch (Exception ex)
{
log.Error(ex.Message, ex);
throw ex;
}
}