首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OperationCanceledException应力测试

OperationCanceledException应力测试
EN

Stack Overflow用户
提问于 2016-11-21 08:44:03
回答 1查看 1.8K关注 0票数 0

我刚刚制作了一个WebApi (C#,.net 4.5.2),并将它发布到了网上。为了确保它正常工作,我开始测试它。

其余的网络服务没有通过“压力”测试。我每秒钟发送服务30+- http请求,并得到以下典型的错误消息:

代码语言:javascript
复制
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()

日志中也发生了多次相同的错误。

当我进入特定的机器时,我看到CPU是100%,RAM是80%。这意味着,机器给她最好的处理负荷。

问题

  1. 根据我上面提供的StackTrace,我无法理解代码中的问题到底在哪里?
  2. 我的代码是自动扩展的(托管在云中)。但是,新机器只在5分钟后创建(取决于平均CPU > 50%)。我应该如何处理突然出现的大量HTTP请求?也许服务器应该说:“嘿,30秒后试试阿吉安”之类的?什么是正确的解决办法?
EN

回答 1

Stack Overflow用户

发布于 2016-11-21 09:06:22

代码语言:javascript
复制
System.OperationCanceledException: The operation was canceled.

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40715929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档