Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1764718
  • 博文数量: 150
  • 博客积分: 660
  • 博客等级: 上士
  • 技术积分: 2480
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-08 11:39
文章分类

全部博文(150)

文章存档

2019年(4)

2018年(36)

2017年(53)

2016年(7)

2015年(3)

2014年(3)

2013年(27)

2012年(2)

2011年(1)

2006年(1)

2005年(13)

分类: 系统运维

2017-03-26 16:46:02

redis使用内存调整及优化

1、查看当前内存使用情况

[root@redis01 ~]# redis-cli info
# Server
redis_version:2.8.19
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:c0359e7aa3798aa2
redis_mode:standalone
os:Linux 3.10.0-123.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.3
process_id:24191
run_id:36ad15148d3478f13076b6feb065536c7dca4adc
tcp_port:6379
uptime_in_seconds:173800
uptime_in_days:2
hz:10
lru_clock:14099001
config_file:/etc/redis.conf

# Clients
connected_clients:84
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:14187404192
used_memory_human:13.21G
used_memory_rss:14567976960
used_memory_peak:14189556584
used_memory_peak_human:13.22G
used_memory_lua:35840
mem_fragmentation_ratio:1.03
mem_allocator:jemalloc-3.6.0

# Persistence
loading:0
rdb_changes_since_last_save:130135
rdb_bgsave_in_progress:1
rdb_last_save_time:1490493874
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:100
rdb_current_bgsave_time_sec:74
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

# Stats
total_connections_received:280094
total_commands_processed:228769139
instantaneous_ops_per_sec:1111
total_net_input_bytes:14293923616
total_net_output_bytes:42883168734
instantaneous_input_kbps:72.58
instantaneous_output_kbps:77.55
rejected_connections:0
sync_full:1
sync_partial_ok:0
sync_partial_err:1
expired_keys:38545
evicted_keys:0
keyspace_hits:33635872
keyspace_misses:302049
pubsub_channels:0
pubsub_patterns:4
latest_fork_usec:195303

# Replication
role:master
connected_slaves:1
slave0:ip=x.0.x.x,port=6379,state=online,offset=11332087470,lag=0
master_repl_offset:11332106737  ##  已修改隐藏实际ip
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:11331058162
repl_backlog_histlen:1048576

# CPU
used_cpu_sys:6134.57
used_cpu_user:2565.36
used_cpu_sys_children:8045.19
used_cpu_user_children:97035.76

# Keyspace
db0:keys=337475,expires=180183,avg_ttl=1286629728

2、分析

实际内存消耗已经13G

used_memory_human:13.21G

查看zabbix内redis使用内存的最近一个月记录

一个月前3.5G,线性增长到到13G

平均过期时间

db0:keys=337475,expires=180183,avg_ttl=1286629728

实际内存设置

[root@redis01 ~]# redis-cli config get maxmemory
1) "maxmemory"
2) "0"

3、优化措施

3.1、设置内存限制,防止达到内存最大限制宕机

设置内存最大使用量为10G,先调整运行时

127.0.0.1:6379> config set maxmemory 10737418240
OK
(10.76s)
127.0.0.1:6379> info
......
# Memory
used_memory:10730048552
used_memory_human:9.99G

设置redis.conf,下次重启生效

maxmemory 10737418240

3.2、调整过期时间,清理过期时间keys占用内存

默认过期时间移交开发调整,avg_ttl单位为ms,换成后平均为15天,相当长的时间;
未设置默认过期时间的keys,移交开发调整;

3.3、调整系统参数,保证bgsave正常运行

[root@redis01 ~]# cat /etc/sysctl.conf
vm.overcommit_memory = 1

运行命令后生效

sysctl -p 

3.4、分析keys,找出使用内存最大的keys列表交开发分析

安装redis-rdb-tools

过程略

生成redis快照

rdb -c memory dump.rdb > memory.csv   #dump.rdb为redis生成的dump文件

查找内存用量最大的20个对象

sort -t, -k4nr memory.csv |heand -n 20
阅读(8299) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~