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