Hi,

Thanks for the detailed explanation.

On Tue, Nov 8, 2016 at 11:23 AM, Kishanthan Thangarajah <[email protected]
> wrote:

> DepSynch update/commit on manager node is designed to run with deployment
> scheduler task. So on every run, we check whether any changes to the local
> repo and then commit those to remote. The above trace is for doing a svn
> status check and find whether there are any local file changes
> (modification, addition etc) before deciding on executing the svn commit
> command.
>
> The above can run only on a manager / read-write node. What's the impact
> with performance? Are we seeing any bottleneck with this task running or is
> the resource consumption?
>
There is an impact on performance as the dep sync task utilizes the CPU
most of the time. We noticed the performance issue in a 2 CPU machine.
Since the dep sync task is running every 15 seconds, there is not much CPU
time for other threads.

>
> On Mon, Nov 7, 2016 at 1:35 PM, Isuru Perera <[email protected]> wrote:
>
>> Hi,
>>
>> When analyzing a performance issue using Java Flight Recorder, I noticed
>> that the server is running Deployment Synchronizer task most of the time.
>>
>> Please see the stack trace below.
>>
>>
>> Stack Trace    Sample Count    Percentage(%)
>> java.util.Stack.peek()    20    1.661
>>    
>> org.tmatesoft.sqljet.core.internal.table.SqlJetBtreeTable.getCurrentState()
>> 20    1.661
>>       org.tmatesoft.sqljet.core.internal.table.SqlJetBtreeTable.getCursor()
>> 19    1.578
>>          org.tmatesoft.sqljet.core.internal.table.SqlJetBtreeTable.hasMoved()
>> 11    0.914
>>             org.tmatesoft.sqljet.core.internal.table.SqlJetBtreeTable.eof()
>> 10    0.831
>>                
>> org.tmatesoft.sqljet.core.internal.table.SqlJetBtreeTable.getRecord()
>> 8    0.664
>>                   org.tmatesoft.sqljet.core.inte
>> rnal.table.SqlJetBtreeTable.getValueMem(int)    6    0.498
>>                      org.tmatesoft.sqljet.core.inte
>> rnal.table.SqlJetBtreeDataTable.getValueMem(int)    6    0.498
>>                         org.tmatesoft.sqljet.core.inte
>> rnal.table.SqlJetBtreeTable.getValueUncached(int)    6    0.498
>>                            org.tmatesoft.sqljet.core.inte
>> rnal.table.SqlJetBtreeTable.getValue(int)    6    0.498
>>                               org.tmatesoft.sqljet.core.inte
>> rnal.table.SqlJetBtreeDataTable.getValue(int)    6    0.498
>>                                  org.tmatesoft.sqljet.core.inte
>> rnal.table.SqlJetBtreeTable.getValues()    6    0.498
>>                                     org.tmatesoft.sqljet.core.inte
>> rnal.table.SqlJetTableDataCursor$16.run(SqlJetDb)    6    0.498
>>                                        org.tmatesoft.sqljet.core.tabl
>> e.SqlJetDb$3.run(SqlJetEngine)    6    0.498
>>                                           org.tmatesoft.sqljet.core.tabl
>> e.engine.SqlJetEngine$12.runSynchronized(SqlJetEngine)    6    0.498
>>
>> org.tmatesoft.sqljet.core.table.engine.SqlJetEngine.runSynch
>> ronized(ISqlJetEngineSynchronized)    6    0.498
>>
>> org.tmatesoft.sqljet.core.table.engine.SqlJetEngine.runEngin
>> eTransaction(ISqlJetEngineTransaction, SqlJetTransactionMode)    6
>> 0.498
>>
>> org.tmatesoft.sqljet.core.table.SqlJetDb.runTransaction(ISqlJetTransaction,
>> SqlJetTransactionMode)    6    0.498
>>
>> org.tmatesoft.sqljet.core.table.SqlJetDb.runReadTransaction(ISqlJetTransaction)
>> 6    0.498
>>
>> org.tmatesoft.sqljet.core.internal.table.SqlJetTableDataCursor.getRowValues()
>> 6    0.498
>>
>> org.tmatesoft.svn.core.internal.db.SVNSqlJetSelectStatement.getRowValues2(Map)
>> 5    0.415
>>
>> org.tmatesoft.svn.core.internal.db.SVNSqlJetSelectStatement.loadRowValues(boolean)
>> 5    0.415
>>
>> org.tmatesoft.svn.core.internal.db.SVNSqlJetSelectStatement.next()
>> 5    0.415
>>
>> org.tmatesoft.svn.core.internal.wc17.db.SVNWCDb.addChildren(Set,
>> SVNSqlJetStatement)    2    0.166
>>
>> org.tmatesoft.svn.core.internal.wc17.db.SVNWCDb.gatherChildren(File,
>> boolean, boolean)    2    0.166
>>
>> org.tmatesoft.svn.core.internal.wc17.db.SVNWCDb.readChildren(File)
>> 2    0.166
>>
>> org.tmatesoft.svn.core.internal.wc2.ng.SvnNgCleanup.repairTimestamps(SVNWCContext,
>> File)    2    0.166
>>
>> org.tmatesoft.svn.core.internal.wc2.ng.SvnNgCleanup.repairTimestamps(SVNWCContext,
>> File)    2    0.166
>>
>> org.tmatesoft.svn.core.internal.wc2.ng.SvnNgCleanup.repairTimestamps(SVNWCContext,
>> File)    2    0.166
>>
>> org.tmatesoft.svn.core.internal.wc2.ng.SvnNgCleanup.repairTimestamps(SVNWCContext,
>> File)    2    0.166
>>
>> org.tmatesoft.svn.core.internal.wc2.ng.SvnNgCleanup.cleanupInternal(SVNWCContext,
>> File)    1    0.083
>>
>>                                  org.tmatesoft.svn.core.interna
>> l.wc2.ng.SvnNgCleanup.cleanup(SVNWCContext, File)    1    0.083
>>
>>                                     org.tmatesoft.svn.core.interna
>> l.wc2.ng.SvnNgCleanup.run(SVNWCContext)    1    0.083
>>
>>                                        org.tmatesoft.svn.core.interna
>> l.wc2.ng.SvnNgCleanup.run(SVNWCContext)    1    0.083
>>
>>                                           org.tmatesoft.svn.core.interna
>> l.wc2.ng.SvnNgOperationRunner.run()    1    0.083
>>
>>
>> org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperation)
>> 1    0.083
>>
>>
>> org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperation)    1
>> 0.083
>>
>>
>> org.tmatesoft.svn.core.wc2.SvnOperation.run()    1    0.083
>>
>>
>> org.tmatesoft.svn.core.javahl17.SVNClientImpl.cleanup(String)    1
>> 0.083
>>
>>
>> org.tigris.subversion.svnclientadapter.javahl.AbstractJhlClientAdapter.cleanup(File)
>> 1    0.083
>>
>>
>> org.wso2.carbon.deployment.synchronizer.subversion.SVNBasedArtifactRepository.commit(int,
>> String)    1    0.083
>>
>>
>> org.wso2.carbon.deployment.synchronizer.DeploymentSynchronizer.commit()
>> 1    0.083
>>
>>
>> org.wso2.carbon.deployment.synchronizer.internal.DeploymentS
>> ynchronizerServiceImpl.commit(int)    1    0.083
>>
>>
>> org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.deploymentSyncCommit()
>> 1    0.083
>>
>>
>> org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.run()
>> 1    0.083
>>
>>
>> java.util.concurrent.Executors$RunnableAdapter.call()    1    0.083
>>
>>
>> java.util.concurrent.FutureTask.runAndReset()    1    0.083
>>
>>
>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFu
>> tureTask.access$301(ScheduledThreadPoolExecutor$ScheduledFutureTask)
>> 1    0.083
>>
>>
>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run()
>> 1    0.083
>>
>>
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker)
>> 1    0.083
>>
>>
>> java.util.concurrent.ThreadPoolExecutor$Worker.run()    1    0.083
>>
>>
>>                                  java.lang.Thread.run()    1    0.083
>>
>> Why is this running periodically? How to configure the time period?
>>
>
> This can be configured via carbon.xml (DeploymentUpdateInterval), but
> this is the same task that does the deployment too (on every 15 sec). I
> would recommend not to change this.
>
I think there should be a different parameter for configuring the dep sync
task interval. I also noticed this parameter, but I couldn't figure out
that it's also related to deployment synchronizer.

>
> Is there a way to disable this scheduled task  and update only when
>> there's a notification?
>>
>
> This is run only on a read-write node. So we have to have this as there is
> no other way to find out whether there were any local modification and then
> commit those to remote.
>

>
>>
>> Product is WSO2 API Manager 1.10.
>>
>> Thanks!
>>
>> Best Regards,
>>
>> --
>> Isuru Perera
>> Associate Technical Lead | WSO2, Inc. | http://wso2.com/
>> Lean . Enterprise . Middleware
>>
>> about.me/chrishantha
>> Contact: +IsuruPereraWSO2 <https://www.google.com/+IsuruPereraWSO2/about>
>>
>
>
>
> --
> *Kishanthan Thangarajah*
> Technical Lead,
> Platform Technologies Team,
> WSO2, Inc.
> lean.enterprise.middleware
>
> Mobile - +94773426635
> Blog - *http://kishanthan.wordpress.com <http://kishanthan.wordpress.com>*
> Twitter - *http://twitter.com/kishanthan <http://twitter.com/kishanthan>*
>



-- 
Isuru Perera
Associate Technical Lead | WSO2, Inc. | http://wso2.com/
Lean . Enterprise . Middleware

about.me/chrishantha
Contact: +IsuruPereraWSO2 <https://www.google.com/+IsuruPereraWSO2/about>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to