GCP에서 Redis의 성능 저하

GCP에서 Redis의 성능 저하

우리는 Firebase 플랫폼을 더 잘 활용하기 위해 최근 애플리케이션을 Azure에서 Google Cloud Platform으로 옮겼습니다. 이제 최대 1000Mbps로 설정된 VPC 커넥터를 통해 Redis 인스턴스와 통신하는 다수의 Firebase 기능이 있습니다. 기능은 작동하지만 Redis 쿼리의 성능은 Azure에서 마이크로서비스를 사용하여 실행했을 때와 비교하여 사용량이 많은 시간대에 매우 느립니다.

GCP에서 실행 중인 Redis 인스턴스는 25GB RAM을 갖춘 표준 인스턴스이지만 현재 약 13GB만 사용 중입니다. 우리는 모두 만료되지 않는 세트 또는 정렬된 세트인 약 300,000개의 키를 가지고 있습니다(ttl=0). 애플리케이션은 지속적으로 다양한 세트에 더 많은 항목을 추가하고 있습니다.

우리는 Redis를 캐시로 사용하지 않고 데이터를 빠르게 교차하고 처리하기 위한 논리 계층으로 사용합니다. 교차는 모든 키 사이에서 수행될 수 있으며 이로 인해 클러스터링은 가능하다면 악몽처럼 보입니다.

사용량이 많은 시간에는 Redis에서 간단한 PING응답이 60초 이상 걸릴 수 있습니다 PONG. 활동량이 적은 시간에도 여전히 10초 이상 걸릴 수 있습니다. CPU 그래프는 괜찮아 보이고 때로는 100%에 도달하지만 결코 그 상태를 유지하지 않습니다. 에 따르면 메모리 조각화는 1.06인데 info memory, 내가 읽은 내용에 따르면 이 수치도 괜찮을 것입니다. 지연 시간도 문제가 되지 않는 것 같습니다. 나는 "redis 성능을 모니터링하는 방법" 가이드를 여러 번 살펴봤지만 여전히 무엇이 잘못되었는지 파악하는 데 더 가깝습니다.

여기에 있는 사람 중 다음에 무엇을 조사해야 할지 전혀 아는 사람이 없나요?

아래는 -명령의 출력입니다 info all.

# Server
redis_version:4.0.14
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:1a41b421362ff783
redis_mode:standalone
os:Linux 4.19.112+ x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:6.3.0
process_id:1
run_id:0f04aeebf8790dbf66e8b6b71c95157832e83804
tcp_port:6379
uptime_in_seconds:5372676
uptime_in_days:62
hz:10
lru_clock:15916574
executable:/data/redis-server
config_file:/usr/local/etc/redis/redis.conf

# Clients
connected_clients:386
client_longest_output_list:1
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:13755985544
used_memory_human:12.81G
used_memory_rss:14612512768
used_memory_rss_human:13.61G
used_memory_peak:13821377392
used_memory_peak_human:12.87G
used_memory_peak_perc:99.53%
used_memory_overhead:2717930060
used_memory_startup:3653752
used_memory_dataset:11038055484
used_memory_dataset_perc:80.26%
total_system_memory:35849793536
total_system_memory_human:33.39G
used_memory_lua:3240960
used_memory_lua_human:3.09M
maxmemory:26843545600
maxmemory_human:25.00G
maxmemory_policy:volatile-lru
mem_fragmentation_ratio:1.06
mem_allocator:jemalloc-4.0.3
active_defrag_running:0
lazyfree_pending_objects:0

# Persistence
loading:0
rdb_changes_since_last_save:12652002628
rdb_bgsave_in_progress:0
rdb_last_save_time:1609594635
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:123
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:717807616
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_last_cow_size:0

# Stats
total_connections_received:11772107
total_commands_processed:44766456481
instantaneous_ops_per_sec:8999
total_net_input_bytes:11667388987
total_net_output_bytes:23685769242
instantaneous_input_kbps:2.23
instantaneous_output_kbps:3.19
rejected_connections:0
sync_full:1
sync_partial_ok:0
sync_partial_err:1
expired_keys:0
expired_stale_perc:0.00
expired_time_cap_reached_count:0
evicted_keys:0
keyspace_hits:7340540
keyspace_misses:265889
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:302420
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0

# Replication
role:master
connected_slaves:1
slave0:ip=10.150.95.59,port=6379,state=online,offset=10678179325,lag=3
master_replid:f497652148f651d0c087a9d2bb33fd5f124e18a6
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:10678204720
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:2684354560
repl_backlog_first_byte_offset:7993850161
repl_backlog_histlen:2684354560

# CPU
used_cpu_sys:7674.65
used_cpu_user:3521705.50
used_cpu_sys_children:18.38
used_cpu_user_children:120.26

# Commandstats
cmdstat_zadd:calls=44559021486,usec=266567931159,usec_per_call=5.98
cmdstat_get:calls=10595,usec=11200,usec_per_call=1.06
cmdstat_multi:calls=37785398,usec=21279258,usec_per_call=0.56
cmdstat_subscribe:calls=6543,usec=29469,usec_per_call=4.50
cmdstat_config:calls=241673,usec=61201855,usec_per_call=253.24
cmdstat_dbsize:calls=3618,usec=3112,usec_per_call=0.86
cmdstat_sadd:calls=16166,usec=84124,usec_per_call=5.20
cmdstat_psync:calls=1,usec=149,usec_per_call=149.00
cmdstat_bgsave:calls=1,usec=302657,usec_per_call=302657.00
cmdstat_info:calls=2399503,usec=320297314,usec_per_call=133.48
cmdstat_zrangebyscore:calls=2531456,usec=61389137799,usec_per_call=24250.53
cmdstat_zrange:calls=312,usec=20303884,usec_per_call=65076.55
cmdstat_auth:calls=1720895,usec=1254440,usec_per_call=0.73
cmdstat_slaveof:calls=80343,usec=126039,usec_per_call=1.57
cmdstat_lastsave:calls=3,usec=3,usec_per_call=1.00
cmdstat_role:calls=16196665,usec=175267620,usec_per_call=10.82
cmdstat_echo:calls=13088,usec=5588,usec_per_call=0.43
cmdstat_replconf:calls=2087395,usec=2168422,usec_per_call=1.04
cmdstat_ping:calls=13297,usec=5590,usec_per_call=0.42
cmdstat_zrem:calls=258,usec=116323,usec_per_call=450.86
cmdstat_smembers:calls=188,usec=4924728,usec_per_call=26195.36
cmdstat_select:calls=1697357,usec=1228773,usec_per_call=0.72
cmdstat_srem:calls=149,usec=15348,usec_per_call=103.01
cmdstat_exec:calls=142630025,usec=7053257948255,usec_per_call=49451.42
cmdstat_command:calls=3,usec=1355,usec_per_call=451.67
cmdstat_scan:calls=63,usec=1015832,usec_per_call=16124.32

# Cluster
cluster_enabled:0

# Keyspace
db0:keys=312817,expires=0,avg_ttl=0

# oom-prevention
oom_prevention_on:No
current_useconds_with_oom_prevention_on:0
total_useconds_with_oom_prevention_on:0
oom_prevention_threshold:30619509719
oom_prevention_threshold_human:28.52G
used_memory_total:14612512768
used_memory_total_human:13.61G
peak_used_memory_total:15259754496
peak_used_memory_total_human:14.21G
used_memory_aof:0
used_memory_aof_human:0B
used_memory_rdb:0
used_memory_rdb_human:0B

관련 정보