问题一
WARNING you have Transparent Huge Pages (THP) support enabled in your kernel.
This will create latency and memory usage issues with Redis. To fix this issue run the
command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and
add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be
restarted after THP is disabled.
转载:https://baijiahao.baidu.com/s?id=1607973381088116497&wfr=spider&for=pc
内存是由块管理,即众所周知的页面。超大页面是 2MB 和 1GB 大小的内存块。2MB 使用的页表可管理多 GB 内存,而 1GB 页是 TB 内存的最佳选择。红帽企业版 Linux 6 开始就采用了超大页面管理。
超大页面必须在引导时分配。它们也很难手动管理,且经常需要更改代码以便可以有效使用。因此红帽企业版 Linux 也部署了透明超大页面 (THP)。THP 是一个提取层,可自动创建、管理和使用超大页面的大多数方面。THP可以改进系统的性能。
开关文件
cat /sys/kernel/mm/transparent_hugepage/enabled
使用命令查看时,如果输出结果为[always]表示透明大页启用了。[never]表示透明大页禁用、[madvise]表示(只在MADV_HUGEPAGE标志的VMA中使用THP)
存在问题
THP在有些应用场景会出现异常,因此oracle、mongodb、redis等服务都建议关闭这个特性,因为这个可能导致延迟和内存使用问题。
临时解决方法:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
RHEL/CentOS可以直接写到/etc/rc.local里面实现开始自动修改
总结
Transparent Huge Pages(THP)可以减少使用超大页面的复杂行,目前THP已在各种系统、配置、程序和负载中测试优化,可以改进大多数系统配置的性能。如果不是必要,或者已知存在问题的服务,还是建议开启来。
问题二
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
转载:https://jingyan.baidu.com/article/c33e3f48e2ff1cea15cbb5b0.html
原因就是因为128太小了。执行echo 511 > /proc/sys/net/core/somaxconn
命令就把这个问题解决了。但是这个只是暂时的。如果想要永久解决,打开ietc/sysctl.conf
在这里面添net.core.somaxconn= 1024 然后执行sysctl -p 就可以永久消除这个warning
在这启动redis就看不到这个128的warning了
对于TCP backlog的理解可以读这篇:
转载:https://blog.csdn.net/lizhitao/article/details/9204405
问题三 background save db不成功(所需内存不够导致。Background save may fail under low memory condition,(其他方式可以通过释放buffer/cache然后重启,也可以通过扩展服务器内存方式)。)
注意:redis持久化策略不同对内存的需求也不一样;可以看这篇文章理解持久化策略(RDB和AOF的配置) 转载:https://www.cnblogs.com/itdragon/p/7906481.html
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_memory 可选值0 1 2
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
解决办法
将vm.overcommit_memory 设为1
(1)编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效
(2)sysctl vm.overcommit_memory=1
(3)echo 1 > /proc/sys/vm/overcommit_memory
可以看这篇文章:https://blog.csdn.net/whycold/article/details/21388455
问题四:redis Error moving temp DB file temp-20970.rdb on the final destination root (in server root dir /var/spool/cron): Operation not permitted
权限不足,以管理员权限运行程序。sudo.
其他
RDB方式 的优缺点
优点:
1 适合大规模的数据恢复。
2 如果业务对数据完整性和一致性要求不高,RDB是很好的选择。
缺点:
1 数据的完整性和一致性不高,因为RDB可能在最后一次备份时宕机了。
2 备份时占用内存,因为Redis 在备份时会独立创建一个子进程,将数据写入到一个临时文件(此时内存中的数据是原来的两倍哦),最后再将临时文件替换之前的备份文件。
所以Redis 的持久化和数据的恢复要选择在夜深人静的时候执行是比较合理的。
AOF方式的优缺点
优点:数据的完整性和一致性更高
缺点:因为AOF记录的内容多,文件会越来越大,数据恢复也会越来越慢。