16
Views
11
Comments
Timer Delay Of Execution
Question

Is there any way to eliminate the waiting for execution of timers?

We are having an issue about the "delay" when we are comparing the expected run('Should have run at) and actual run('Timer of Log').

Because the waiting is much longer than the actual process duration of these timers which we cannot afford.

Each of these timers is a heavy timer approach and processing millions of records per execution and has been optimized.

Thank you very much.



mvp_badge
MVP
Rank: #2

Hi Gerrick,

It seems you have chosen the wrong technology for the job. If you need to quickly process a massive amount of records, you should definitely look at BPT or Light BPT, nog Timers. I can see only delays of about 10 seconds, that's not a big delay at all!

Rank: #95

Hi Gerrick,


Your timers are in a queue and there can only be a given number per server running on parallel (per default configuration 3).

This can be changed if you're working on an On-Premises infrastructure, on Configuration Tool (see here how).

If you're working on a Cloud infrastructure, I would contact OutSystems support to see if it is possible to change that.



Cheers,

João

Rank: #261

Both with timers and BPT, there is no guarantee when they will start. In both cases, the start is asynchronously, so already delayed, and depending on the load of the server, it could take some time before they are actually running. So if starting time is critical neither are a good solution.

Wouldn't it make more sense to process multiple companies in 1 timer run? That way you eliminate the delays.

Rank: #4382

What is the cost of delay of the timers before being executed? aside from having multiple timers that are running at the same time, because that's not our case for this.

Rank: #170

Hi Gerrick,

At a first glance, I would suggest you the same solution that João said, to improve the number of timers that you can run in parallel.

If I understood right your user case, you can't do that because each timer has a level and every company should pass through these levels is that right?


What you can do is to really improve the number of parallels runs and control in your logic which company has already started and not started.


This way you could have something like, Computation Level 1 Slot 1 and Computation Level 1 Slot 2 running in parallel.

And to make sure the same company will not run in the next timer running in parallel you control it in your logic setting a status like started or not.

Is that possible?


Other solution is to improve the number of front ends in your farm to try to have more resources to run these timers.

Rank: #170

Another solution that come to my head right now.

You could set the priority of the timers according to Computation Level to try to run first every level 1, then every level 2, then every level 3and so on...


This way none of the companies will finish before others...


Not sure if I understood right your user case, but hope it helps.


Cheers and Regards,

RR :)