Available solution for performance testing between sync gateway and mobile

Hello Couchbase specialists

Our team is about to upgrade from Sync Gateway 2.8 enterprise edition to 3.2 EE. Now we are planning to run performance testing between mobile and sync gateway. There are a few questions

  1. What are the available metrics we can use from sync gateway log for perf testing (metrics etc). I checked following page but didn’t find much about performance (some are associated with channel/rev/delta cache, but not directly associated with how much median/time an update from upstream sent to sync gateway and how much median/time an update to mobile app) JSON Metrics | Couchbase Docs

  2. Looked into sync gateway logs, there are multiple entries of different events during a single content replication

    a. Type:getCheckpoint Client:cp-xxxxx
    b. MultiChangesFeed(channels: }) … (to _some_device_id)
    c. Type:subChanges Since: some_check_point Filter:sync_gateway/bychannel Channels:…
    e. Sending changes since some_check_point
    f. GetCachedChanges(“some_channel”, some_check_point ) → 735 changes valid from #another_seq_id
    g. Sent 200 changes to client, from seq seq_1:seq2
    h. Sent 200 changes to client, from seq seq_3
    i. MultiChangesFeed done
    j. BLIP+WebSocket connection closed

From above logging entries, it is difficult to summarize performance for large amount of content update, due to the fact that

a. Each replication session has different size of content change
b. Some changes are cached (channel/rev/delta), but it is difficult to separate them based on the logging pattern
c. Some changes have to fall back to "full body replication" due to "Error generating delta"
d. Some replication interrupted due to "Error from bh.handleChangesResponse: use of closed BLIP sender" most likely there is connection issues causing the web socket connection close before all changes have been replicated. 

This topic is not about troubleshooting item c and item d, but just wondering how to summarize general statistic performance data from 2.8 so we can use it to compare with 3.2


Moreover, is there any way to simulate mobile cblite connection on a server?
I am able to create channels, but I think for an end-to-end perf testing there should be cblite to actively receiving the changes.