一、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.
温馨提醒 您的内核中启用了透明的大页面(THP)支持。这将创建与redis的延迟和内存使用问题。THP能减少内存分配的次数,同时可以加快子进程的fork速度。但是redis采用了写时复制机制,一旦有数据要修改,redis不会直接修改内存数据,而是copy一份这个数据,然后进行修改,DOUBLE了。在THP开启的情况下,如果就算只有2KB的数据,Redis也需要复制2MB的内存大页,而在常规情况下,只需要复制4KB的内存页,使得每次写命令引起的复制内存页的单位放大了512倍,这会拖慢写操作的执行时间,导致大于写操作慢查询,最终影响redis的性能。自RHEL 6开始,THP都是默认打开的,很明显,问题是由于THP的启动导致,那么只需关闭它即可。
临时解决:请以root身份运行命令 echo never > /sys/kernel/mm/transparent_hugepage/enabled
永久解决:
-
sudo vim /etc/rc.local
- echo never > /sys/kernel/mm/transparent_hugepage/enabled
二、WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
上面写的很清晰,意思是配置 /proc/sys/net/core/somaxconn的值是128,虽然redis.conf中配置的是511,但是linux内核会以无提示的方式将其截断为128。在一个高并发的环境下,128是远远不够的,所以我们要改大一些
永久解决:将net.core.somaxconn = 1024添加到/etc/sysctl.conf中,然后执行sysctl -p 生效配置。