我正在对我的数据库进行负载测试,我正在测试的主要实体上有1000万条记录,在子网站上有6000万条记录(与foreigh key链接),使用非常简单的快速应用程序并对API端点GET进行简单调用。我不断得到一行具有相同ID的行。实际上代码中没有任何特定内容,只需使用repo调用SELECT:
public async Task<Package> GetSingleAsync(int id)
{
return await _repository.GetByIdAsync<Package>(id);
}
现在问题是,我经常收到这个错误:
System.Data.Entity.Core.EntityCommandExecutionException:错误 执行命令定义时发生。看到内心 细节例外。 ---&GT; System.Data.SqlClient.SqlException: 执行超时已过期。超时时间过去之前 完成操作或服务器没有响应。 ---&GT; System.ComponentModel.Win32Exception:等待操作超时
---内部异常堆栈跟踪结束---在System.Data.SqlClient.SqlConnection.OnError(SqlException异常, Boolean breakConnection,Action1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource
1完成,Int32超时,Task&amp;任务, 布尔和放大器; usedCache,Boolean asyncWrite,Boolean inRetry)at System.Data.SqlClient.SqlCommand.RunExecuteReader(的CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String 方法)at System.Data.SqlClient.SqlCommand.ExecuteReader(的CommandBehavior 行为,String方法)at System.Data.Entity.Infrastructure.Interception.InternalDispatcher1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func
3操作,TInterceptionContext interceptionContext, 行动3 executing, Action
3已执行) System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(的DbCommand 命令,DbCommandInterceptionContext interceptionContext)at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand,CommandBehavior行为)---内部异常结束 堆栈跟踪--- at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand,CommandBehavior behavior)at System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute [TResultType](ObjectContext的 context,ObjectParameterCollection parameterValues)at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction [T](Func键1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) at System.Data.Entity.Core.Objects.ObjectQuery
1&LT;&GT; c__DisplayClass7.b__5() 在 System.Data.Entity.Infrastructure.DbExecutionStrategy.Execute [TResult](Func键1 operation) at System.Data.Entity.Core.Objects.ObjectQuery
1.GetResults(可空1 forMergeOption) at System.Data.Entity.Core.Objects.ObjectQuery
1..GetEnumerator&GT; b__0() 在System.Data.Entity.Internal.LazyEnumerator1.MoveNext() at System.Collections.Generic.List
1..ctor(IEnumerable1 collection)
1来源)
at System.Linq.Enumerable.ToList[TSource](IEnumerable
我尝试扩展我的数据库和我的网络服务应用程序,没有任何变化。我正在进行5分钟的长时间负载测试,有30个用户恒定负载,平均每秒30个请求。
另一件事是,我的应用程序执行查询是每20秒崩溃并重新启动:
11:46:50 19-Jul DataPlatform RD00155D622BC3 [Application_Start] 在机器RD00155D622BC3上启动的实例
11:46:28 19-Jul DataPlatform RD00155D622BC3 [Application_End]实例结束 在机器RD00155D622BC3上。原因是:InitializationError
我该如何解决这个问题?我的想法是增加实例并进一步计划,还有什么呢?