常规设置响应头期间WCF服务的间歇性挂起
我在WCF服务中间歇性挂断。通常需要几毫秒的调用在服务恢复之前需要30秒或更长时间才能完成。但是,所有调用都已成功完成。New Relic报告请求中的所有时间都花费在ExecuteRequestHandler中 我在服务器上为所有请求启用了失败请求跟踪,并监视和等待。当网站开始悬挂时,我把痕迹拉下来,我看到了以下典型情况: 136-一般设置响应标题 HeaderName:内容长度 人头价值:2237 替换:false 信息的 273281毫秒 日志中的所有其他步骤都以0毫秒计时。挂起功能各不相同,当服务正常运行时,具有完全相同参数和响应有效负载的完全相同的功能表现完美。似乎当站点开始挂起时,所有请求都会被阻止,直到is恢复 谁能建议我从这里走到哪里常规设置响应头期间WCF服务的间歇性挂起,wcf,freeze,Wcf,Freeze,我在WCF服务中间歇性挂断。通常需要几毫秒的调用在服务恢复之前需要30秒或更长时间才能完成。但是,所有调用都已成功完成。New Relic报告请求中的所有时间都花费在ExecuteRequestHandler中 我在服务器上为所有请求启用了失败请求跟踪,并监视和等待。当网站开始悬挂时,我把痕迹拉下来,我看到了以下典型情况: 136-一般设置响应标题 HeaderName:内容长度 人头价值:2237 替换:false 信息的 273281毫秒 日志中的所有其他步骤都以0毫秒计时。挂起功能各不相同
谢谢从我的角度来看,这是一种很好的方式,非常烦人。NewRelic说服务挂在ExecuteRequestHandler中,我跳进一个兔子洞,试图诊断挂起的原因 解决方案是调整WCF服务的节流配置:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="...">
<serviceThrottling maxConcurrentCalls="512" maxConcurrentSessions="3200" maxConcurrentInstances="3712" />
事实证明,WCF服务在默认情况下会被限制,即使没有此条目,并且最近MS增加了默认值。我的服务在大约每分钟200转的速度下掉了下来(我认为这并不过分)。我使用的值是新默认值的8倍,现在一切都运行得非常好
我不知道为什么在默认配置条目中没有显示这一情况的情况下限制服务。WCF已经被配置成地狱,我已经决定不再使用它。从这里开始的Web API
希望有一天这能帮助别人:)