工作流服务在464消息后停止响应

我在执行工作流时遇到一个特殊问题。
我尝试过所有我能想到的东西,现在需要创意。

这是我的配置:
1.在IIS 7中托管的WF4工作流服务(xamlx),使用net.msmq / netMsmqBinding进行传输(MSMQ是事务性的)。
2.没有使用工作流程持久性。
3.我使用控制台应用程序客户端将消息发送到工作流程(每条消息都会创建新的工作流程)。 4.每个工作流程如下所示:等待START消息 - >等待END消息(我只发送START消息)。

如果我发送了500条消息 - 464条得到了正确处理,但是在此之上,所有消息都会转到lock_ *队列,然后转到毒性队列。 我检查了调试,分析事件日志以及消息和跟踪svclogs以下是我得到的最详细的消息:

System.TimeoutException,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089该操作未在00:00:30的分配超时内完成。 分配给此操作的时间可能是超时时间的一部分。 System.Runtime.AsyncResult.End [TAsyncResult](IAsyncResult result)at System.ServiceModel.Activities.Dispatcher.PersistenceProviderDirectory.LoadOrCreateAsyncResult.HandleReserveThrottle(IAsyncResult result)at System.Runtime.AsyncResult.AsyncCompletionWrapperCallback(IAsyncResult result)System.TimeoutException:操作未在00:00:30的分配超时内完成。 分配给此操作的时间可能是超时时间的一部分。 System.Runtime.AsyncResult.End [TAsyncResult](IAsyncResult result)at System.ServiceModel.Activities.Dispatcher.PersistenceProviderDirectory.LoadOrCreateAsyncResult.HandleReserveThrottle(IAsyncResult result)at System.Runtime.AsyncResult.AsyncCompletionWrapperCallback(IAsyncResult result)

那时对http://localhost/MyWebService?wsdl请求也会失败,并返回404。

如果我重新启动IIS - 一切都会恢复正常,直到发送464条消息。

  • 我在哪里可以找到更详细的日志? (我已经将System.Diagnostics设置为最大冗余)
  • 数字464魔术呢?
  • 什么可能导致此Web服务被锁定?

  • 听起来你正在进入节流限制,这些设置适用于WF4,就像它们对WCF所做的一样。 maxConcurrentInstances设置设置给定时间内可以在内存中的工作流实例的最大数量。

    <behaviors> 
      <serviceBehaviors> 
        <behavior name="WorkflowServiceBehavior"> 
          <!-- Specify throttling behavior -->
          <serviceThrottling maxConcurrentInstances="1000"/> 
        </behavior>
      </serviceBehaviors>
    </behaviors>
    

    就像在旁边一样,在IIS中托管时应始终使用持久性。 早晚IIS将重新启动AppDomain,如果WorkflowServicehost无法将工作流实例的状态保存到磁盘,则它们将丢失。 这也意味着闲置的工作流实例可以从内存中移除,并且不会对存在内存限制的maxConcurrentInstances进行计数。

    链接地址: http://www.djcxy.com/p/95889.html

    上一篇: Workflow Service stops responding after 464 messages

    下一篇: Hosting Workflows with WorkflowServiceHost