[ 
https://issues.apache.org/jira/browse/OFBIZ-11200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17032193#comment-17032193
 ] 

Nicolas Malin commented on OFBIZ-11200:
---------------------------------------

Hi [~lektran] can you have few time for a quick review and criticize my 
approach ?

 

> Refactoring old job process
> ---------------------------
>
>                 Key: OFBIZ-11200
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-11200
>             Project: OFBiz
>          Issue Type: Improvement
>          Components: framework
>    Affects Versions: Trunk
>            Reporter: Nicolas Malin
>            Assignee: Nicolas Malin
>            Priority: Minor
>              Labels: job, service
>         Attachments: OFBIZ-11200.patch
>
>
> Currently to purge old job, we use the thread job manager to check if some 
> job need to be run and if the pool is empty, check the old job to purge.
> I detected a problem when you have many job's server and two pools.
> In my case, I have a first pool that run regular job and a second that 
> receive huge asynchrone services (by persist call).
> Server who manage the second pool have rarely the possibility to purge their 
> jobs that, by the way, increase JobSandbox table
> Server who manage the first pool, call often the purge process, but the table 
> size generate a long query time to purge few element. Long query time, run 
> often, this purge process consume 15% of the database load (with correct 
> reindex)
> After analyze, I propose this refactoring :
> * When you call JobSandbox table for a purge, use a limit on the query with 
> the max thread pool because when you have the database return, you purge only 
> with this limit so this help the database to not scan the whole table. Other 
> small improvement, do not sort the result (no functional  gain). With this 
> each query pass to 3.5s at 0.30s (on postgres).
> * Purge by the pool thread is nice, each server can only purge their own job 
> (filtered on run_by_instance_id), to help an overloaded server, I was 
> rehabiliting service purgeOldJobs that you can run with specific parameter to 
> make assistance.
> * Last, all job services are historical on class 
> org.apache.ofbiz.service.ServiceUtil, I moved them all in a new dedicate 
> class org.apache.ofbiz.service.job.JobServices



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to