Details
Description
From Manik:
From my findings, the Q2-Q7 tests are hitting the bottlenecks due to the fetches.
Time (ms) Time (ms) Time (ms)
Clients 1 2 5
q1 1.23 1.54 2.172
q2 48.46 68.92 139.3
q3 91.86 99.72 125.2208294
q4 125.22 429.145 728.564
q5 16.77 22.86 44.7
q6 29.29 34.06 50.73
q7 99.5 108.03 135.22
The time spent doing fetches due to multi-get is the dominant factor. I tried to optimize the multiGet but it seems that this a problem that other people have complained in the past. See :
https://forums.couchbase.com/t/how-to-perform-real-multi-get/2499
https://forums.couchbase.com/t/golang-real-multi-get/1236
I know that at Zynga we used to use a real multi-get where the client would send out all the keys in one request, e.g.
GET k1 k2 k3 k4 ….Kn
The response from the server would be streamed back to the client. The go-couchbase client that we use pipelines all the keys and waits for all of them to come back before returning to the server. This is going to increase the latency of the system.
What we would need to do is to change the implementation so that bulkGet (read multiGet) will stream keys back the application as soon as they are available.
I am trying to talk to the client guys and seek their opinion.