Redis Slaves Использование памяти внезапно скачет - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть 1 Redis-Master и 4 подчиненных, каждое из которых имеет 8 ядер и 5G памяти. Наша структура и использование:

  • Все операции чтения go только для подчиненных узлов с помощью балансировки нагрузки DNS и запись на подчиненных узлах отключена.
  • Каждые 5 минут мы sh или обновление ключей в мастере
  • Мониторинг с прометеем / графаном
  • redis.conf Файл:
    protected-mode no
    port 6379
    tcp-backlog 511
    timeout 0
    tcp-keepalive 300
    daemonize no
    supervised systemd
    pidfile /var/run/redis.pid
    loglevel verbose
    logfile /var/log/redis/redis.log
    databases 16
    always-show-logo yes
    stop-writes-on-bgsave-error yes
    rdbcompression yes
    rdbchecksum yes
    dbfilename dump.rdb
    dir /var/lib/redis
    replicaof master-ip 6379
    replica-serve-stale-data yes
    replica-read-only yes
    repl-diskless-sync no
    repl-diskless-sync-delay 5
    repl-disable-tcp-nodelay no
    replica-priority 100
    lazyfree-lazy-eviction no
    lazyfree-lazy-expire no
    lazyfree-lazy-server-del no
    replica-lazy-flush no
    appendonly no
    appendfilename "appendonly.aof"
    appendfsync everysec
    no-appendfsync-on-rewrite no
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb
    aof-load-truncated yes
    aof-use-rdb-preamble yes
    lua-time-limit 5000
    cluster-enabled no
    slowlog-log-slower-than 10000
    slowlog-max-len 128
    latency-monitor-threshold 0
    notify-keyspace-events ""
    hash-max-ziplist-entries 512
    hash-max-ziplist-value 64
    list-max-ziplist-size -2
    list-compress-depth 0
    set-max-intset-entries 512
    zset-max-ziplist-entries 128
    zset-max-ziplist-value 64
    hll-sparse-max-bytes 3000
    stream-node-max-bytes 4096
    stream-node-max-entries 100
    activerehashing yes
    client-output-buffer-limit normal 0 0 0
    client-output-buffer-limit replica 256mb 64mb 60
    client-output-buffer-limit pubsub 32mb 8mb 60
    hz 10
    dynamic-hz yes
    aof-rewrite-incremental-fsync yes
    rdb-save-incremental-fsync yes
    

Проблема в моментах что мастер обновляет тех из ведомых, которые есть у подключенных клиентов, у нас скачок использования памяти. Иногда до 3 ГБ, где в главном узле только 100 МБ данных. Скачки выше для подчиненных с большим количеством подключенных клиентов и только НОЛЬ, когда нет подключенных клиентов. Вот два примера.

Just a jump Желтая линия - это использование памяти мастером.

Huge jump that causes downtime Просто сравните масштаб по памяти. Использование основной памяти не видно. Разрыв вызван простоем.

У меня нет ИДЕИ и я не знаю, что отслеживать или проверять что! Единственная подсказка, которую я имею на подключенных клиентах, напрямую влияет на скачок памяти.

...