C# 操作取消压力测试异常
我刚刚制作了一个WebApi(C#,.NET4.5.2)并将其发布到web上。为了确保它工作良好,我开始测试它 RESTWeb服务未通过“压力”测试。我每秒向服务发送30+http请求,并返回以下典型错误消息:C# 操作取消压力测试异常,c#,asp.net,asp.net-web-api,azure-cloud-services,C#,Asp.net,Asp.net Web Api,Azure Cloud Services,我刚刚制作了一个WebApi(C#,.NET4.5.2)并将其发布到web上。为了确保它工作良好,我开始测试它 RESTWeb服务未通过“压力”测试。我每秒向服务发送30+http请求,并返回以下典型错误消息: System.OperationCanceledException: The operation was canceled. at System.Threading.CancellationToken.ThrowOperationCanceledException() at
System.OperationCanceledException: The operation was canceled.
at System.Threading.CancellationToken.ThrowOperationCanceledException()
at System.Net.Http.HttpContentExtensions.<ReadAsAsyncCore>d__0`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.ModelBinding.FormatterParameterBinding.<ExecuteBindingAsyncCore>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.HttpActionBinding.<ExecuteBindingAsyncCore>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveNext()
System.OperationCanceledException:操作已取消。
在System.Threading.CancellationToken.ThrowoOperationCanceledException()中
在System.Net.Http.HttpContentExtensions.d_u0`1.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Web.Http.ModelBinding.FormatterParameterBinding.d__0.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Web.Http.Controllers.HttpActionBinding.d_u0.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Web.Http.Controllers.ActionFilterResult.d_u2.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()中
在System.Web.Http.Controllers.ExceptionFilterResult.d_u0.MoveNext()中
日志中多次出现相同的错误
当我进入特定的机器时,我看到CPU是100%,RAM是80%。也就是说,机器给了她最好的处理负载的能力
问题
您可能需要检查iis请求日志,以查看出现了什么问题。由于这是在压力测试中发生的,我猜您的服务缺少线程(阅读了解更多详细信息)。您可能需要考虑请求处理程序的异步模型,以提高可伸缩性并更好地利用线程。(阅读)如果不知道你的压力测试做了什么,就无法回答这个问题。请显示您的代码。无法共享整个项目。。。但是,上面的异常在他的堆栈跟踪中没有提到我的代码。没有一个异常,任何人都无法提供帮助。第2个问题呢?这个问题与任何代码都没有关系。可能,但这也很模糊。整个问题的答案是视情况而定。我不确定这是否适合这么做。我认为你最好的选择是更多的测试。你需要在很低的压力下开始压力测试,然后逐渐增加(在观察结果的同时逐渐增加),看看到底在什么时候表现开始下降,而不知道压力测试做了什么这是无法回答的。请显示您的代码。无法共享整个项目。。。但是,上面的异常在他的堆栈跟踪中没有提到我的代码。没有一个异常,任何人都无法提供帮助。第2个问题呢?这个问题与任何代码都没有关系。可能,但这也很模糊。整个问题的答案是视情况而定。我不确定这是否适合这么做。我认为你最好的选择是更多的测试。你需要在很低的压力下开始压力测试,然后逐步增加压力测试(在观察结果的同时逐步增加压力测试),看看性能在什么时候开始下降
System.OperationCanceledException: The operation was canceled.