Jump to content

Synchronization troubleshooting

From Resco's Wiki
Revision as of 14:14, 4 July 2019 by Jzambor (talk | contribs) (Created page with "This is a technical article dealing with performance considerations and possible issues during the synchronization process. == Evaluate performance == Evaluating synchro...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This is a technical article dealing with performance considerations and possible issues during the synchronization process.

Evaluate performance

Evaluating synchronization performance in general is mainly relevant for full synchronization; incremental synchronization is not reliable.

One of the most important parameters is Time_spent_in_entities_download / #_of_records_downloaded

  • 1 ms/rec = good
  • Best times ~0.3 ms/rec

Identify problematic module (if any)

  • Downloader
  • Uploader
  • Cleanup
  • SharePoint
  • Any module that takes too much time...

Possible performance problems:

  • Slow connection
  • Web latency
  • Server performance - overloaded, large POA table; often only 1-2 entities cause the problem
  • Client performance
    • device quality (rare)
    • large data
    • database indexes (seldom a sync problem)
    • SyncDownloader pauses

What does it mean large data?

  1. DB size Database_8_0.sdf
    Normal case: O(100) MB
    Possible problems: > 500 MB
  2. Huge table(s), i.e. tables with >> 100K records
    • Table record counts can be found in FullSync detailed log
    • Slow Reindex operation - may take >20 secs
    • Cause downloader pauses
  3. Too much data in the Blobs
    • Can be measured only when you have access to AppData folder
    • SyncLog contains only indirect data - Attachment count & time

Did the synchronization complete?

What can happen:

  • Aborted synchronization (Reported as UserAbort in the log)
  • SyncEngine was not able to write sync log (SyncLog contains only SYNCSTART info and nothing else)

Common reason:

  • User switches the app to background (during the synchronization process)
  • The operating system needs more resources and kills the app.
  • iOS warns the app that it will be terminated, but the SyncEngine is executing a long-running operation that cannot be interrupted (typically REINDEX)

Other problems

The more you understand the sync process, the better you'll be able to identify the problem.

  • Incomplete download (MaxSyncCount)
  • Unneeded downloads: Records are downloaded & then deleted in cleanup: Check sync filters
  • Slow upload, mainly in questionnaires: If there are too many upload records => Increase MaxExecuteMultiple

How to investigate problems

  • SyncLog, especially <Analysis> node
  • Switch on detailed sync logs
  • Look for problems in other logs (Online log etc.; available from AboutForm)
  • Try to collect info about the data size (FullSync detailed logs list record counts per table)
  • Fiddler (Decreases the performance!)