Question

mWO initialization time - identify slowness


Userlevel 2
Badge +6

Hi,

I'm trying to find out what causes long mWO initilazation time.

I've found a thread on community regarding slow initialization
https://community.ifs.com/service-touch-apps-mwo-mro-43/long-delay-in-mwo-app-10-initialization-process-13158

Now, our customer reports slow initialization and also synchronization. Initialization takes up to 1.5 hour (measured in local network), synchronization also takes a lot of time and usually is unsuccesfull (done on mobile data far from work).

I did a test yesterday evening using vpn connection and in my case initialization took 20 minutes. Looking in synchronized objects tab on mobile user, the most time consuming entity was InventoryPartInStock and InventoryPart
But summing time for entites it should take approx 3-4 minutes to finish.


On my iPad after downloading entities there was a longer approx 10 minutes or more period with a Waiting for Server message
 

 

After that there was another information about Processing messages for a minute or two.

 

And finally application loaded.

 

I wonder if there is a way to find out what’s takes the time in Waiting for Server phase. Is it waiting for some database task (background job) or something else? In previous test during day it took 8 minutes to fully initialize. 

So the time varies - maybe application is waiting for a particular process or job and it could be fastened by setting such job to run more frequently?

 

According to query from above thread the results on PROD are as below

 

Regarding synchronization - I’ve found background job Mobile_Batch_Sys.Execute_Job_ which takes sometimes up to half an hour

Is it responsible for synchronization time and also affects initialization time?

Are there any settings which could shorten times and makes technician work without long delays?

 

I would appreciate any help.

 

Best regards,.

Hubert


11 replies

Userlevel 6
Badge +16

Looks like Apps 10. If so there is a Lobby Page which shows the performance timings of the Sync. It could be that one or more entities are taking the time. Look to see which entities are taking the time to sync. If its due to data then you can add a Permission Set Filter to reduce the data and speed up the sync times.

Cheers

James

Userlevel 2
Badge +6

 Hi,

@James Ashmore - you mean this lobby? I've entered AppName as ServiceEngApp - same as on mobile user 


I did a new test - disconnected and connected once again so it forced full initialization. Updating data like InventoryPart... etc. took approx. 5 minutes, then there was 35 minutes with Waiting for Server on iPad.
During that time in mobile user in application there was Init waiting for GP status.

What exactly means "Waiting for Server" ? Does the iPad waits for information from server or waits for some background jobs to finish? 


Looking for VPN connections stats on iPad seems like there is no data communication during first few minutes when "Waiting for Server" and very low traffic (~1kB/s) in next minutes(I'm not sure if it's only mWO, the OpenVPN stats may show other iPad networ usage).

 

So I can suspect 2 things: first - a local DB is being built during that time on iPad but it seems too long or second - iPad is waiting for something to be done on server.

Finally it synchronized and in logs I can see a time gap between 13:10 and 13:40 -  in that time it was waiting for server.


What happened during this 30 minutes?

 

Best regards,

Hubert

Userlevel 6
Badge +16

Sounds like a potential problem with Grouped Push entities. This Sync Method is used in MWO to sync the Equipment Objects. The Grouped Push process should run overnight and collect the datasets for the end users. Once the end users connect they will be given the latest copy of the data sets they belong to. By default this is defined based on Site access. However, the first time a User ever connects with a data set not already prepared by the nightly Grouped Push process the server will start preparing this data for them. This can take some time. However, once this process completes it should be quick for subsequent users.

The Grouped Push process is documented here Synchronization Rules (ifs.com)

Cheers

James

Userlevel 2
Badge +6

Hi,

Indeed, there is a problem with Grouped Push. I’ve found almost 200 000 rows in mobile_transaction_offline_tab and seems like there is a problem with processing them due to ORA-00001 error in MOBILE_TRANSACTION_PUBLISH_SYS

The procedure has been recently changed in standard, so we are going to apply the change (only in the procedure below as the change was marked as grouped patch to apply with a whole UPD)

 

PROCEDURE Insert_Offline_Rows___ (
   entity_                IN Transaction_Entity_Row,
   transaction_filter_id_ IN VARCHAR2,
   objkeys_               IN Objkey_Table,
   context_               IN Transaction_Context) 
IS
   tab_ Mobile_Objkeys_Type;  -- Local PLSQL collections cannot bind into insert, update, delete, or merge
   insert_count_ NUMBER;
BEGIN
   IF objkeys_.COUNT > 0 THEN
      SELECT column_value
        BULK COLLECT INTO tab_
        FROM TABLE(objkeys_);
      
      --Only insert missing OBJKEYs to the table
      INSERT INTO mobile_transaction_offline_tab(app_name, app_version, entity, transaction_filter_id, objkey, rowversion)

      SELECT entity_.app_name, entity_.app_version, entity_.entity, transaction_filter_id_, D.column_value, 1 FROM TABLE(tab_) D
       WHERE NOT EXISTS (
        SELECT 1 FROM mobile_transaction_offline_tab
         WHERE app_name    = entity_.app_name
           AND app_version = entity_.app_version
           AND entity      = entity_.entity
           AND transaction_filter_id = transaction_filter_id_
           AND objkey = column_value);

 

High number of record in mobile_transaction_offline_tab causes slowness each time grouped push is being executed..I expect that after the fix the initialization time will be shorter.

@James Ashmore  - from your experience - is the default 10 seconds execution interval of Grouped Push in database processes proper, or should it be increased? I think it’s a default setting, not changed by anyone.

 

 

Userlevel 6
Badge +16

Yes, the 10 second execution interval should be fine - we have conducted lots of testing around this area to ensure the parameters are satisfactory for all installations. Please retest once the update has been applied

Cheers

James

Userlevel 1
Badge +7

Hi,

Indeed, there is a problem with Grouped Push. I’ve found almost 200 000 rows in mobile_transaction_offline_tab and seems like there is a problem with processing them due to ORA-00001 error in MOBILE_TRANSACTION_PUBLISH_SYS

The procedure has been recently changed in standard, so we are going to apply the change (only in the procedure below as the change was marked as grouped patch to apply with a whole UPD)

 

PROCEDURE Insert_Offline_Rows___ (
   entity_                IN Transaction_Entity_Row,
   transaction_filter_id_ IN VARCHAR2,
   objkeys_               IN Objkey_Table,
   context_               IN Transaction_Context) 
IS
   tab_ Mobile_Objkeys_Type;  -- Local PLSQL collections cannot bind into insert, update, delete, or merge
   insert_count_ NUMBER;
BEGIN
   IF objkeys_.COUNT > 0 THEN
      SELECT column_value
        BULK COLLECT INTO tab_
        FROM TABLE(objkeys_);
      
      --Only insert missing OBJKEYs to the table
      INSERT INTO mobile_transaction_offline_tab(app_name, app_version, entity, transaction_filter_id, objkey, rowversion)

      SELECT entity_.app_name, entity_.app_version, entity_.entity, transaction_filter_id_, D.column_value, 1 FROM TABLE(tab_) D
       WHERE NOT EXISTS (
        SELECT 1 FROM mobile_transaction_offline_tab
         WHERE app_name    = entity_.app_name
           AND app_version = entity_.app_version
           AND entity      = entity_.entity
           AND transaction_filter_id = transaction_filter_id_
           AND objkey = column_value);

 

High number of record in mobile_transaction_offline_tab causes slowness each time grouped push is being executed..I expect that after the fix the initialization time will be shorter.

@James Ashmore  - from your experience - is the default 10 seconds execution interval of Grouped Push in database processes proper, or should it be increased? I think it’s a default setting, not changed by anyone.

 

 

Hi @HubertZ Thanks for sharing the investigation results with reference to MWO initialization. Would you kindly advise if the above inserted procedure worked with reducing the time, as we are facing similar longer waiting times during the device initialization. We are using Application 10 UPD 9. Thanks for your kind thoughts.

Userlevel 5
Badge +12

Hi,

Indeed, there is a problem with Grouped Push. I’ve found almost 200 000 rows in mobile_transaction_offline_tab and seems like there is a problem with processing them due to ORA-00001 error in MOBILE_TRANSACTION_PUBLISH_SYS

The procedure has been recently changed in standard, so we are going to apply the change (only in the procedure below as the change was marked as grouped patch to apply with a whole UPD)

 

PROCEDURE Insert_Offline_Rows___ (
   entity_                IN Transaction_Entity_Row,
   transaction_filter_id_ IN VARCHAR2,
   objkeys_               IN Objkey_Table,
   context_               IN Transaction_Context) 
IS
   tab_ Mobile_Objkeys_Type;  -- Local PLSQL collections cannot bind into insert, update, delete, or merge
   insert_count_ NUMBER;
BEGIN
   IF objkeys_.COUNT > 0 THEN
      SELECT column_value
        BULK COLLECT INTO tab_
        FROM TABLE(objkeys_);
      
      --Only insert missing OBJKEYs to the table
      INSERT INTO mobile_transaction_offline_tab(app_name, app_version, entity, transaction_filter_id, objkey, rowversion)

      SELECT entity_.app_name, entity_.app_version, entity_.entity, transaction_filter_id_, D.column_value, 1 FROM TABLE(tab_) D
       WHERE NOT EXISTS (
        SELECT 1 FROM mobile_transaction_offline_tab
         WHERE app_name    = entity_.app_name
           AND app_version = entity_.app_version
           AND entity      = entity_.entity
           AND transaction_filter_id = transaction_filter_id_
           AND objkey = column_value);

 

High number of record in mobile_transaction_offline_tab causes slowness each time grouped push is being executed..I expect that after the fix the initialization time will be shorter.

@James Ashmore  - from your experience - is the default 10 seconds execution interval of Grouped Push in database processes proper, or should it be increased? I think it’s a default setting, not changed by anyone.

 

 

Hi @HubertZ Thanks for sharing the investigation results with reference to MWO initialization. Would you kindly advise if the above inserted procedure worked with reducing the time, as we are facing similar longer waiting times during the device initialization. We are using Application 10 UPD 9. Thanks for your kind thoughts.

Hi, I’m facing the same.

Any news @HubertZ ?

Tks a lot

Userlevel 2
Badge +6

Hi @lopespetro & @ISD 

The fragment of the patch mentioned above resolved the ORA-00001error, but the synchronization time remained long. I’ll have to look into again as we have now few users facing this issue.

Best regards,

Hubert

Userlevel 1
Badge +7

Hi @lopespetro & @ISD 

The fragment of the patch mentioned above resolved the ORA-00001error, but the synchronization time remained long. I’ll have to look into again as we have now few users facing this issue.

Best regards,

Hubert

Hi @HubertZ Thanks for your kind feedback. Would be great if you could kindly share any findings and recommendations on further investigations. Good luck. Thanks. 🙂

Userlevel 2
Badge +6

Hi,

I’m wondering if the information from lobby could let me find what’s causing the initialization time.

Or if the running background jobs affect the initialization time.

The time in seconds in first column varies, the longest at nigth.

But when I take a new device and login to mWO and start initialization, does it have to wait for a particular process in server to finish?

I did a test yesterday, connected to TEST environment and start initialization. It was running quickly first, but next for a good 20-30 minutes it seemed like it was waiting for the server.

@James Ashmore  - you probably know the most how does it work - could you please add a coment? 

Customer has reported me 2-3 users who were unable to initialize in 2 hours. They got new tablets and were unable to work. 

That’s how it looked yesterday on TEST - a long break between 13:07:09 and 13:41:07

For some entities there are filters using contract (one user = one contract/site) but people using mWO replace each other, so I can’t see other way to limit number of data.

 

Best regards,

Hubert

Userlevel 6
Badge +16

The delay in the sync looks like it is down to Grouped Push.

Grouped Push collects data for known user filters based on the users already initialized. If the filter changes then the Grouped Push process will start the collection of data for the user on Initialization. If its a large dataset then this will take time.

This is why we often see the first Initialization takes time yet subsequent initializations are faster.

At the moment the Lobby doesn’t display Grouped Push statistics but we are working on this.

Cheers

James

Reply