I meet a strange problem when I optimize LedisDB one client get
performance. The get flow likes below:
1, read key from socket
2, get data with key from RocksDB
3, write data to socket
all the data size is 4k.
First I try to benchmark only network handling without db, just read key
from socket then write 4k data to socket, the RPS is about 12k.
Then I benchmark only db get, just get data from rocksdb, the RPS is about
As you see, for the above results, if I combine network + db, the RPS may
be 1 / (1/12 + 1/60) , about 10k RPS or a little less. But to my surprise,
the RPS is only 6k.
I let some people help me do the same benchmark and they get the same
I doubted this was the problem for rocksdb, so I created an issue here
https://github.com/facebook/rocksdb/issues/383. I got some help but had no
I used go pprof and found the the most cpu was on cgo calling rocksdb get
function and syscall reading/writing socket.
I tried many ways to find why and optimize but had little effect badly.
Does anyone meet this problem, or give me some advice where to begin?
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to email@example.com.
For more options, visit https://groups.google.com/d/optout.