索引
这个问题其实困扰小编应该约有3年多了,但是由于过于忙碌的原因,一直迟迟没有机会去整理这个问题的解决方法,今天稍微有空闲时间,跟我遇到一样问题的人可以看看。
redis 突然停止原因
我们打开 Redis 日志进行问题查找(日志路径位置在 /www/server/redis/redis.log),打开之后可以自己估计大概停止的时间段,然后查到大约的时间段,可以看到以下这串字:
7210:M 11 Oct 2023 19:44:32.080 # You requested maxclients of 10000 requiring at least 10032 max file descriptors. 7210:M 11 Oct 2023 19:44:32.080 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted. 7210:M 11 Oct 2023 19:44:32.080 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'. 7210:M 11 Oct 2023 19:44:32.080 * monotonic clock: POSIX clock_gettime
翻译成中文的意思大概原因是文件描述符(档案描述子)至少要10032,而当前我的 maxclients 值为 10000,所以才导致 Redis 停止运作。
解决办法
在路径 /www/server/redis/utils 底下找到文件名「systemd-redis_server.service」,打开它,然后找到 “LimitNOFILE” 的参数,将 10000 改为 65536 并保存文件。
然后在路径 /etc 底下找到文件名「sysctl.conf」,检查有无底下两行(若没有就把这两行添加上去):
vm.overcommit_memory = 1 net.core.somaxconn=1024
然后就静观其变,观察自己服务器的状况吧!