• zhaozhao.zz's avatar
    networking: optimize parsing large bulk greater than 32k · 247d2a73
    zhaozhao.zz authored
    If we are going to read a large object from network
    try to make it likely that it will start at c->querybuf
    boundary so that we can optimize object creation
    avoiding a large copy of data.
    
    But only when the data we have not parsed is less than
    or equal to ll+2. If the data length is greater than
    ll+2, trimming querybuf is just a waste of time, because
    at this time the querybuf contains not only our bulk.
    
    It's easy to reproduce the that:
    
    Time1: call `client pause 10000` on slave.
    
    Time2: redis-benchmark -t set -r 10000 -d 33000 -n 10000.
    
    Then slave hung after 10 seconds.
    247d2a73
networking.c 82.3 KB