Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 操作取消压力测试异常_C#_Asp.net_Asp.net Web Api_Azure Cloud Services - Fatal编程技术网

C# 操作取消压力测试异常

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

我刚刚制作了一个WebApi(C#,.NET4.5.2)并将其发布到web上。为了确保它工作良好,我开始测试它

RESTWeb服务未通过“压力”测试。我每秒向服务发送30+http请求,并返回以下典型错误消息:

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%。也就是说,机器给了她最好的处理负载的能力

问题
  • 根据我上面提供的StackTrace,我无法理解 我的代码中的问题到底在哪里
  • 我的代码会自动扩展(托管在云中)。但是,新机器仅在5分钟后创建(取决于平均CPU>50%)。我应该如何处理突然出现的大量HTTP请求?也许服务器应该说:“嘿,30秒后试试agian”之类的话?正确的解决方案是什么
  • 这通常表示连接到服务的客户端在服务发送响应之前关闭了连接。就api层而言,这通常意味着您在建立http连接时指定了超时,或者您用于进行http调用的库具有默认超时

    您可能需要检查iis请求日志,以查看出现了什么问题。由于这是在压力测试中发生的,我猜您的服务缺少线程(阅读了解更多详细信息)。您可能需要考虑请求处理程序的异步模型,以提高可伸缩性并更好地利用线程。(读)

    这通常表示连接到服务的客户端在服务发送响应之前关闭了连接。就api层而言,这通常意味着您在建立http连接时指定了超时,或者您用于进行http调用的库具有默认超时


    您可能需要检查iis请求日志,以查看出现了什么问题。由于这是在压力测试中发生的,我猜您的服务缺少线程(阅读了解更多详细信息)。您可能需要考虑请求处理程序的异步模型,以提高可伸缩性并更好地利用线程。(阅读)

    如果不知道你的压力测试做了什么,就无法回答这个问题。请显示您的代码。无法共享整个项目。。。但是,上面的异常在他的堆栈跟踪中没有提到我的代码。没有一个异常,任何人都无法提供帮助。第2个问题呢?这个问题与任何代码都没有关系。可能,但这也很模糊。整个问题的答案是视情况而定。我不确定这是否适合这么做。我认为你最好的选择是更多的测试。你需要在很低的压力下开始压力测试,然后逐渐增加(在观察结果的同时逐渐增加),看看到底在什么时候表现开始下降,而不知道压力测试做了什么这是无法回答的。请显示您的代码。无法共享整个项目。。。但是,上面的异常在他的堆栈跟踪中没有提到我的代码。没有一个异常,任何人都无法提供帮助。第2个问题呢?这个问题与任何代码都没有关系。可能,但这也很模糊。整个问题的答案是视情况而定。我不确定这是否适合这么做。我认为你最好的选择是更多的测试。你需要在很低的压力下开始压力测试,然后逐步增加压力测试(在观察结果的同时逐步增加压力测试),看看性能在什么时候开始下降
    System.OperationCanceledException: The operation was canceled.