you going to run into this from time to time or one reason or another.
the approach I took was to spread the jobs out so they are not lumped
together.
take a look at how the jobs are Marshalled to be run.

Josh Jacobson sent the following on 7/13/2011 8:35 PM:
> Vacuum has been run, (took quite a while). Yeah, I see now that the
> JobManager actually tries to update all the JobSandbox rows in the
> transaction, so 60 seconds was pretty low.
> 
> I am trying 10 minutes now and see how that goes.
> 
> I am using postgress by the way.
> 
> Thanks for the help, I really appreciate it.
> 
> --
> Josh.
> 
> On Wed, Jul 13, 2011 at 8:29 PM, Scott Gray <scott.g...@hotwaxmedia.com> 
> wrote:
>> Not sure what db you're using but it probably wouldn't hurt to run a vacuum 
>> on the table to speed up processing.
>>
>> By the way, I'm pretty sure the default timeout is 60 seconds so you might 
>> want to try something a little larger :-)
>>
>> Regards
>> Scott
>>
>> On 14/07/2011, at 2:58 PM, Josh Jacobson wrote:
>>
>>> I tried 60 seconds for timeout but that didn't work. I guess Ill
>>> double it now and keep trying.
>>>
>>> I have about 260,000 pending jobs, and nothing is getting done.
>>>
>>> I know what you mean about purgeOldjobs. That service is crashed now
>>> and I deleted old jobs from the database by hand. I was up to 2.6
>>> million rows. Ofbiz was pretty much unusable.
>>>
>>> If you have any other suggestions I'd love Yo hear them.
>>>
>>> On Wednesday, July 13, 2011, Scott Gray <scott.g...@hotwaxmedia.com> wrote:
>>>> Ah okay, that is entirely dependent on the number of jobs and the speed 
>>>> the server can process them.  As a side note I would keep a close eye on 
>>>> the purgeOldJobs service, when it starts falling over (transaction timeout 
>>>> again) then the number of rows in the table will increase quickly which in 
>>>> turn will slow down polling.
>>>>
>>>> In general the whole persisted jobs implementation is a bit fragile, 
>>>> especially when dealing with a large number of jobs.  I've wanted to 
>>>> replace it with something like quartz for a while but haven't had the time.
>>>>
>>>> Regards
>>>> Scott
>>>>
>>>> On 14/07/2011, at 2:10 PM, Josh Jacobson wrote:
>>>>
>>>>> Thanks again. I actually meant a suggestion for the transaction
>>>>> timeout. In any case I am grateful for your explanation.
>>>>>
>>>>>
>>>>> On Wednesday, July 13, 2011, Scott Gray <scott.g...@hotwaxmedia.com> 
>>>>> wrote:
>>>>>> As best I can tell there shouldn't be any need to increase the interval 
>>>>>> between polls since the interval timer doesn't actually start until the 
>>>>>> previous poll has completed (see JobPoller.run()) so I can't see how a 
>>>>>> small interval would cause any backlog problems.
>>>>>>
>>>>>> I'm guessing if there is any lock contention then it's probably caused 
>>>>>> by the executing jobs trying to update their respective rows while the 
>>>>>> poller is holding a table lock.  So from that point of view I guess 
>>>>>> increasing the interval could reduce the amount of contention between 
>>>>>> the executing jobs and the next poll.
>>>>>>
>>>>>> Regards
>>>>>> Scott
>>>>>>
>>>>>> On 14/07/2011, at 1:02 PM, Josh Jacobson wrote:
>>>>>>
>>>>>>> Scott,
>>>>>>>
>>>>>>> Thanks! That is very precise advise. Do you have a suggestion on
>>>>>>> interval time? 60 seconds? 120?
>>>>>>>
>>>>>>> Thanks,
>>>>>>>
>>>>>>> On Wed, Jul 13, 2011 at 5:34 PM, Scott Gray 
>>>>>>> <scott.g...@hotwaxmedia.com> wrote:
>>>>>>>> That configuration is for the frequency of job polls.  There isn't any 
>>>>>>>> ability to specify the transaction timeout via configuration so you'll 
>>>>>>>> need to modify the code directly:
>>>>>>>> JobManager.java (line 148):
>>>>>>>> beganTransaction = TransactionUtil.begin();
>>>>>>>> needs to be changed to use TransactionUtil.begin(int)
>>>>>>>>
>>>>>>>> Regards
>>>>>>>> Scott
>>>>>>>>
>>>>>>>> HotWax Media
>>>>>>>> http://www.hotwaxmedia.com
>>>>>>>>
>>>>>>>> On 14/07/2011, at 12:23 PM, Josh Jacobson wrote:
>>>>>>>>
>>>>>>>>> Brett,
>>>>>>>>>
>>>>>>>>> Before I start trying to run the jobs manually, I want to give your
>>>>>>>>> suggestion a try. I think I know where to configure the job polling
>>>>>>>>> transaction time (I believe it's the poll-db-millis="20000" value on
>>>>>>>>> the framework/service/config/serviceengine.xml.
>>>>>>>>>
>>>>>>>>> However, I still don't know what to increase it to. I understand that
>>>>>>>>> we wouldn't want to make it bigger than the default polling interval.
>>>>>>>>> Do you know what the default interval between polling is?
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>>
>>>>>>>>> On Wed, Jul 13, 2011 at 12:31 PM, Brett Palmer 
>>>>>>>>> <brettgpal...@gmail.com> wrote:
>>>>>>>>>> I meant removing finished jobs.  If you have thousands of pending 
>>>>>>>>>> jobs then
>>>>>>>>>> you will have the same problem I mentioned in my first email.  One
>>>>>>>>>> resolution will be to increase the job poller transaction time.  In 
>>>>>>>>>> the
>>>>>>>>>> ofbiz version I was using there was not a way to configure the poller
>>>>>>>>>> transaction time.  It just used the default time.  I had to create a 
>>>>>>>>>> patch
>>>>>>>>>> to allow this to happen.
>>>>>>>>>>
>>>>>>>>>> In the patch you had to be careful to not increase the transaction 
>>>>>>>>>> time
>>>>>>>>>> greater than the frequency of the job poller.  Otherwise you get 
>>>>>>>>>> into a lock
>>>>>>>>>> situation where one job poller is still running within a transaction 
>>>>>>>>>> and
>>>>>>>>>> another poller starts.  This didn't create a huge problem but the 
>>>>>>>>>> second job
>>>>>>>>>> poller would usually lock and then time out.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Brett
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wed, Jul 13, 2011 at 1:15 PM, Josh Jacobson 
>>>>>>>>>> <josh.s.jacob...@gmail.com>wrote:
>>>>>>>>>>
>>>>>>>>>>> Brett,
>>>>>>>>>>>
>>>>>>>>>>>
>>
>>
> 

Reply via email to