Linux 配置优化
我们在使用 Redis 过程中,可能更多的关注 Redis 本身的一些配置优化,如 AOF、RDB 配置、数据结构配置优化等。
但是很少关心 Redis 的载体,服务器的优化。而这往往为我们的项目运行带来灾难性的打击。因此服务器优化也是必不可少的
内存分配控制
Redis启动时,可能会出现下面的日志
# WARNING overcommit_memory is set to 0! Background save may fail under low memory condition.
To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command sysctl vm.overcommit_memory=1' for this to take effect.
overcommit 是 Linux 的一种内存处理机制:Linux 对绝大多数内存申请都会回复 yes,以便运行更多的程序。因为申请内存后,并不会马上使用内存。这种机制就是 overcommit 。
而 overcommit_memory 是用来设置内存分配策略的,有三种取值
ble data-draft-node="block" data-draft-type=table" data-size=normal" data-row-style=">
日志中 Background save 指的是 bgsave 和 bgrewriteaof 。根据操作系统的配置,如果 overcommit_memory 设置为 0 则可能会造成内存申请失败而导致后台持久化失败。
因此 Redis 建议将这个值设置为 1 是为了 fork 操作在低内存下也能执行成功。
设置方法
通过命令修改,立即生效。重启后会失效
sysctl vm.overcommit_memory=1
再将改动写入系统配置文件,使其永久有效
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
建议
采用 Redis 建议的配置是为了在极端情况下 Linux 可以挤出来一些内存供 Redis 备份,但是更建议优先配置好 maxmemory ,给机器留 20%~30% 的空闲内存
使用NTP 同步时间
在集群或哨兵环境中,多台服务器使用相同的网络时间协议同步时间能更方便的阅读日志,排查问题
可以设置定时任务同步时间
crontab -u //设定某个用户的cron服务 crontab -l 列出某个用户cron服务的详细内容 crontab -r 删除某个用户的cron服务 crontab -e 编辑某个用户的cron服务 crontab -i 打印提示,输入yes等确认信息
添加每小时执行一次的任务
0 * * * * /usr/sbin/ntpdate cn.pool.ntp.org > dev/null 2>&1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。