Hi,

I have started to test on the performance numbers of EMM REST APIs in EMM
2.2.0 RC1 pack. First we tested with enrolling n number of devices and
called ring operation and tested again with the same test including the
calling to pending operation endpoint. Here only a generic pending
operation was called.

(These tests are not yet complete and this is the current performance
numbers we have gathered)



*Scenario 1 : Enrolling n number of devices with a single App and calling
ring operation of them*

*With H2 Database*

5000 Devices registered and ringed - Successful (time = 2:36 min)

10000 Devices registered and ringed - Fails (time = 7:23 min) - Error [1]
comes at server stop.


*With MySQL Database*

10000 Devices registered and ringed - Successful (time = 13:47 min)



*Scenario 2 : Enrolling n number of devices with a single App, calling ring
operation of them and calling pending-operation*


*With H2 Database*

10000 Devices registered ringed and pending operations called - Fails (time
= 35:00 min) - Error [2] comes.


*With MySQL Database*

10000 Devices registered ringed and pending operations called - Fails (time
= 22:49 min) - Failed with error [3] which is similar in functionality to
[2].

We will carryout more tests and will be coming up with much accurate
numbers.


[1]

[2016-11-25 17:09:15,749]  INFO
{org.wso2.carbon.tomcat.ext.internal.CarbonTomcatServiceComponent} -
Stopping the carbon web-app registered under : /
[2016-11-25 17:09:15,757]  INFO
{org.wso2.carbon.appmgt.mobile.internal.AppManagerMobileComponent} -  App
Manger Mobile Component deactivated.
[2016-11-25 17:09:15,757]  INFO
{org.wso2.carbon.appmgt.mobile.internal.AppManagerMobileComponent} -  App
Manger MDM is unbound.
Stopping org.wso2.jaggery.scxml with RealmService disabled
[2016-11-25 17:09:16,185] ERROR
{org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl}
-  Error occurred while retrieving advance info of 'android' that carries
the id 'd24f870f390352a45270'
[2016-11-25 17:09:16,197] ERROR
{org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl}
-  Error occurred while retrieving the application list of 'android', which
carries the id '5270'
org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException: SQL Error
occurred while retrieving the list of Applications installed in device id
'5270
    at
org.wso2.carbon.device.mgt.core.dao.impl.ApplicationDAOImpl.getInstalledApplications(ApplicationDAOImpl.java:287)
    at
org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl.getAllDevices(DeviceManagementProviderServiceImpl.java:683)
    at
org.wso2.carbon.policy.mgt.core.task.MonitoringTask.execute(MonitoringTask.java:85)
    at
org.wso2.carbon.ntask.core.impl.TaskQuartzJobAdapter.execute(TaskQuartzJobAdapter.java:67)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
    at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.h2.jdbc.JdbcSQLException: Database is already closed (to
disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to
the db URL) [90121-175]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:332)
    at org.h2.message.DbException.get(DbException.java:172)
    at org.h2.message.DbException.get(DbException.java:149)
    at org.h2.message.DbException.get(DbException.java:138)
    at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1413)
    at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1388)
    at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:265)
    at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at
org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:126)
    at
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
    at
org.wso2.carbon.ndatasource.rdbms.ConnectionRollbackOnReturnInterceptor.invoke(ConnectionRollbackOnReturnInterceptor.java:51)
    at
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
    at
org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:67)
    at
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
    at
org.apache.tomcat.jdbc.pool.interceptor.ConnectionState.invoke(ConnectionState.java:153)
    at
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
    at
org.apache.tomcat.jdbc.pool.TrapException.invoke(TrapException.java:41)
    at
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
    at
org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:80)
    at com.sun.proxy.$Proxy16.prepareStatement(Unknown Source)
    at
org.wso2.carbon.device.mgt.core.dao.impl.ApplicationDAOImpl.getInstalledApplications(ApplicationDAOImpl.java:272)
    ... 9 more
[2016-11-25 17:09:16,206] ERROR
{org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl}
-  Error occurred while retrieving advance info of 'android' that carries
the id 'd24f870f390352a45271'
[2016-11-25 17:09:16,207] ERROR
{org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl}
-  Error occurred while retrieving the application list of 'android', which
carries the id '5271'


[2]

[2016-11-25 18:00:33,358] ERROR
{org.wso2.carbon.device.mgt.core.task.impl.DeviceDetailsRetrieverTask} -
Error occurred while trying to add the operations to device to retrieve
device details.
org.wso2.carbon.device.mgt.core.task.DeviceMgtTaskException: Error occurred
while adding the operations to devices
    at
org.wso2.carbon.device.mgt.core.task.impl.DeviceTaskManagerImpl.addOperations(DeviceTaskManagerImpl.java:135)
    at
org.wso2.carbon.device.mgt.core.task.impl.DeviceDetailsRetrieverTask.execute(DeviceDetailsRetrieverTask.java:55)
    at
org.wso2.carbon.ntask.core.impl.TaskQuartzJobAdapter.execute(TaskQuartzJobAdapter.java:67)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
    at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by:
org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException:
Error occurred while adding operation
    at
org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagerImpl.addOperation(OperationManagerImpl.java:182)
    at
org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl.addOperation(DeviceManagementProviderServiceImpl.java:1100)
    at
org.wso2.carbon.device.mgt.core.task.impl.DeviceTaskManagerImpl.addOperations(DeviceTaskManagerImpl.java:119)
    ... 8 more
Caused by:
org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOException:
Error occurred while adding operation metadata
    at
org.wso2.carbon.device.mgt.core.operation.mgt.dao.impl.GenericOperationDAOImpl.addOperation(GenericOperationDAOImpl.java:72)
    at
org.wso2.carbon.device.mgt.core.operation.mgt.dao.impl.CommandOperationDAOImpl.addOperation(CommandOperationDAOImpl.java:42)
    at
org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagerImpl.addOperation(OperationManagerImpl.java:121)
    ... 10 more
Caused by: org.h2.jdbc.JdbcSQLException: Timeout trying to lock table
"DM_OPERATION"; SQL statement:
INSERT INTO DM_OPERATION(TYPE, CREATED_TIMESTAMP, RECEIVED_TIMESTAMP,
OPERATION_CODE)  VALUES (?, ?, ?, ?) [50200-175]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:332)
    at org.h2.message.DbException.get(DbException.java:172)
    at org.h2.message.DbException.get(DbException.java:149)
    at org.h2.table.RegularTable.doLock(RegularTable.java:516)
    at org.h2.table.RegularTable.lock(RegularTable.java:450)
    at org.h2.command.dml.Insert.insertRows(Insert.java:155)
    at org.h2.command.dml.Insert.update(Insert.java:115)
    at org.h2.command.CommandContainer.update(CommandContainer.java:79)
    at org.h2.command.Command.executeUpdate(Command.java:253)
    at
org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:154)
    at
org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:140)
    at
org.wso2.carbon.device.mgt.core.operation.mgt.dao.impl.GenericOperationDAOImpl.addOperation(GenericOperationDAOImpl.java:63)
    ... 12 more


[3]

[2016-11-25 19:35:17,699] ERROR
{org.wso2.carbon.device.mgt.core.task.impl.DeviceDetailsRetrieverTask} -
Error occurred while trying to add the operations to device to retrieve
device details.
org.wso2.carbon.device.mgt.core.task.DeviceMgtTaskException: Error occurred
while adding the operations to devices
    at
org.wso2.carbon.device.mgt.core.task.impl.DeviceTaskManagerImpl.addOperations(DeviceTaskManagerImpl.java:135)
    at
org.wso2.carbon.device.mgt.core.task.impl.DeviceDetailsRetrieverTask.execute(DeviceDetailsRetrieverTask.java:55)
    at
org.wso2.carbon.ntask.core.impl.TaskQuartzJobAdapter.execute(TaskQuartzJobAdapter.java:67)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
    at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by:
org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException:
Error occurred while adding operation
    at
org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagerImpl.addOperation(OperationManagerImpl.java:182)
    at
org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl.addOperation(DeviceManagementProviderServiceImpl.java:1100)
    at
org.wso2.carbon.device.mgt.core.task.impl.DeviceTaskManagerImpl.addOperations(DeviceTaskManagerImpl.java:119)
    ... 8 more
Caused by:
org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOException:
Error occurred while update device mapping operation status metadata
    at
org.wso2.carbon.device.mgt.core.operation.mgt.dao.impl.GenericOperationDAOImpl.updateTaskOperation(GenericOperationDAOImpl.java:188)
    at
org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagerImpl.addOperation(OperationManagerImpl.java:138)
    ... 10 more
Caused by: java.sql.SQLException: Lock wait timeout exceeded; try
restarting transaction
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:996)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3887)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3823)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2435)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2530)
    at
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1907)
    at
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2141)
    at
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2077)
    at
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2062)
    at
org.wso2.carbon.device.mgt.core.operation.mgt.dao.impl.GenericOperationDAOImpl.updateTaskOperation(GenericOperationDAOImpl.java:184)
    ... 11 more


Thanks.


*Maninda Edirisooriya*
Senior Software Engineer

*WSO2, Inc.*lean.enterprise.middleware.

*Blog* : http://maninda.blogspot.com/
*E-mail* : [email protected]
*Skype* : @manindae
*Twitter* : @maninda
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to