You are viewing limited content. For full access, please sign in.

Question

Question

Workflow Scale by CPU under Advanced Server Options

asked on December 8, 2021

Can someone explain how the settings work in the attached screen shot?  My goal is to have more simultaneous workflows running (scale up essentially).

For instance, my workflow server was 4 core and the three settings were at 4. I bumped my server up to 8 cores, so should these be set to 8 now?

Please explain how the settings work in relation to the server number of cores and how many simultaneous workflows can be running, etc.

Workflow.png
Workflow.png (18.24 KB)
0 0

Replies

replied on December 9, 2021

This does not have much to do with simultaneous workflows. Workflow runs 4 concurrent instances per CPU per workflow definition.

An instance is considered actively running only while it does work (move an entry, set a field, etc). Any instances waiting on conditions or timers are not actively running. So, in essence, an instance is actively running for milliseconds.

Actions that are potentially longer running, like searches or data queries are shifted to a task system so they don't occupy an active slot while waiting for the other party to return results. The dialog you're looking at controls this task system.

Adding more CPUs is the best way to get more instances through your workflow server (assuming your bottleneck is in Workflow and not the Laserfiche or SQL servers).

What is the actual issue you're seeing?

2 0
replied on December 9, 2021

Thanks Miruna. We are getting a lot of triggered workflows as expected. But they are backing up or queueing up. So I was hoping to get more simultaneous workflows to run and effectively speed things up. 

0 0
replied on June 9, 2022

Hi Miruna,

 

   You indicated that there are 4 workflow instance per CPU in the definition.

 

Here is a  section of the workflow agent configuration:

<add name="LookupTrustee" enabled="true" task="LookupTrustee"

      type="Laserfiche.Workflow.Activities.LookupUser.Runtime.LookupTrusteeTaskExecutor, Laserfiche.Workflow.Activities.83, Version=8.3.0.0, Culture=neutral, PublicKeyToken=<redacted>"

      instances="2" scale="CPU" retries="1" />

     <add name="Email" enabled="true" task="Email" type="Laserfiche.Workflow.Activities.Email.Runtime.EmailTaskExecutor, Laserfiche.Workflow.Activities.83, Version=8.3.0.0, Culture=neutral, PublicKeyToken=<redacted>"

      instances="1" scale="Absolute" retries="1" />

     <add name="Data" enabled="true" task="Data" type="Laserfiche.Workflow.Activities.Data.Runtime.DataTaskExecutor, Laserfiche.Workflow.Activities.83.External, Version=8.3.0.0, Culture=neutral, PublicKeyToken=<redacted>"

      instances="2" scale="CPU" retries="1" />

     <add name="SharePoint" enabled="true" task="SharePoint" type="Laserfiche.Workflow.Activities.SharePoint.Runtime.SharePointActivityTaskExecutor, Laserfiche.Workflow.Activities.83.External, Version=8.3.0.0, Culture=neutral, PublicKeyToken=<redacted>"

      instances="4" scale="CPU" />

     <add name="Forms" enabled="true" task="Forms" type="Laserfiche.Workflow.Activities.Forms.Runtime.FormsTaskExecutor, Laserfiche.Workflow.Activities.83.External, Version=8.3.0.0, Culture=neutral, PublicKeyToken=<redacted>"

      instances="4" scale="CPU" />

     <add name="Web" enabled="true" task="Web" type="Laserfiche.Workflow.Activities.Web.Runtime.WebTaskExecutor, Laserfiche.Workflow.Activities.83, Version=8.3.0.0, Culture=neutral, PublicKeyToken=<redacted>"

      instances="4" scale="CPU" />

     <add name="ScheduleOcr" enabled="true" task="ScheduleOcr" type="Laserfiche.Workflow.Activities.ScheduleOcr.Runtime.ScheduleOcrTaskExecutor, Laserfiche.Workflow.Activities.83.External, Version=8.3.0.0, Culture=neutral, PublicKeyToken=<redacted>"

      instances="4" scale="CPU" />

     <add name="Exchange" enabled="true" task="Exchange" type="Laserfiche.Workflow.Activities.Exchange.Runtime.ExchangeActivityTaskExecutor, Laserfiche.Workflow.Activities.83.External, Version=8.3.0.0, Culture=neutral, PublicKeyToken=<redacted>"

      instances="4" scale="CPU" />

     <add name="DocumentEditing" enabled="true" task="DocumentEditing"

      type="Laserfiche.Workflow.Activities.DocumentEditing.Runtime.DocumentEditingTaskExecutor, Laserfiche.Workflow.Activities.83.External, Version=8.3.0.0, Culture=neutral, PublicKeyToken=<redacted>"

      instances="4" scale="CPU" />

    </executors>

   </add>

   <add name="GeneralTasks" enabled="true" threads="4" scale="CPU"

    model="GrowAndShrink" serverOption="TaskThreadSetupInfo_GeneralTasks"

    idleTime="5">

    <executors>

     <add name="Search" enabled="true" task="LaserficheSearch" type="Laserfiche.Workflow.Activities.FindEntry.Runtime.SearchExecutor, Laserfiche.Workflow.Activities.83, Version=8.3.0.0, Culture=neutral, PublicKeyToken=<redacted>"

      instances="4" scale="Absolute" retries="1" />

 

are these the instance settings you are referring to?

If so, what would increasing the settings do to the performance? We are currently running under 50% utilization on CPU for these servers so we would like to "Tune" performance if possible before we start throwing CPU (money) at the problem.

 

 

0 0
replied on June 13, 2022

I wouldn't hazard a guess without more investigation into the performance issue you're referencing.

50% CPU utilization is not likely a problem. Workflow transfers most of its load to the Laserfiche Server and SQL. If there is a bottleneck, it's more likely on those 2.

Please don't edit the config file. All those settings are available through the Admin Console user interface.

0 0
replied on June 19, 2022

Thanks for the response. where would the # instance be set? I looked through the UI for that but all we found was the original screen shot above. 

0 0
replied on June 21, 2022

4 actively running instances per CPU per workflow definition is a hard limit in .Net Framework's Windows Workflow Foundation. It cannot be changed.

0 0
You are not allowed to follow up in this post.

Sign in to reply to this post.