1. 19 Feb, 2018 1 commit
    • antirez's avatar
      Track number of logically expired keys still in memory. · ffde73c5
      antirez authored
      This commit adds two new fields in the INFO output, stats section:
      
      expired_stale_perc:0.34
      expired_time_cap_reached_count:58
      
      The first field is an estimate of the number of keys that are yet in
      memory but are already logically expired. They reason why those keys are
      yet not reclaimed is because the active expire cycle can't spend more
      time on the process of reclaiming the keys, and at the same time nobody
      is accessing such keys. However as the active expire cycle runs, while
      it will eventually have to return to the caller, because of time limit
      or because there are less than 25% of keys logically expired in each
      given database, it collects the stats in order to populate this INFO
      field.
      
      Note that expired_stale_perc is a running average, where the current
      sample accounts for 5% and the history for 95%, so you'll see it
      changing smoothly over time.
      
      The other field, expired_time_cap_reached_count, counts the number
      of times the expire cycle had to stop, even if still it was finding a
      sizeable number of keys yet to expire, because of the time limit.
      This allows people handling operations to understand if the Redis
      server, during mass-expiration events, is able to collect keys fast
      enough usually. It is normal for this field to increment during mass
      expires, but normally it should very rarely increment. When instead it
      constantly increments, it means that the current workloads is using
      a very important percentage of CPU time to expire keys.
      
      This feature was created thanks to the hints of Rashmi Ramesh and
      Bart Robinson from Twitter. In private email exchanges, they noted how
      it was important to improve the observability of this parameter in the
      Redis server. Actually in big deployments, the amount of keys that are
      yet to expire in each server, even if they are logically expired, may
      account for a very big amount of wasted memory.
      ffde73c5
  2. 15 Feb, 2018 3 commits
  3. 14 Feb, 2018 10 commits
  4. 13 Feb, 2018 9 commits
  5. 02 Feb, 2018 1 commit
  6. 24 Jan, 2018 3 commits
  7. 23 Jan, 2018 1 commit
  8. 18 Jan, 2018 3 commits
    • antirez's avatar
      727dd436
    • Guy Benoish's avatar
      Replication buffer fills up on high rate traffic. · fd8efb7c
      Guy Benoish authored
      When feeding the master with a high rate traffic the the slave's feed is much slower.
      This causes the replication buffer to grow (indefinitely) which leads to slave disconnection.
      The problem is that writeToClient() decides to stop writing after NET_MAX_WRITES_PER_EVENT
      writes (In order to be fair to clients).
      We should ignore this when the client is a slave.
      It's better if clients wait longer, the alternative is that the slave has no chance to stay in
      sync in this situation.
      fd8efb7c
    • antirez's avatar
      Cluster: improve anti-affinity algo in redis-trib.rb. · 1673a3f3
      antirez authored
      See #3462 and related PRs.
      
      We use a simple algorithm to calculate the level of affinity violation,
      and then an optimizer that performs random swaps until things improve.
      1673a3f3
  9. 17 Jan, 2018 4 commits
  10. 16 Jan, 2018 4 commits
  11. 15 Jan, 2018 1 commit