今天redis突然報(bào)錯(cuò)搀突,緩存不能存入乏屯,導(dǎo)致登錄接口出現(xiàn)問題,后續(xù)的查驗(yàn)token接口都沒查到redis的token病梢。
cache error
org.springframework.data.redis.RedisSystemException: Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionException: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.
查了原因是因?yàn)槭褂昧藃db持久化胃珍,redis在保存數(shù)據(jù)到磁盤是為了防止主線程假死,會(huì)fock一個(gè)子進(jìn)程來完成這個(gè)操作蜓陌,而這個(gè)子進(jìn)程需要分配和主進(jìn)程相同的內(nèi)存觅彰,即內(nèi)存翻倍,導(dǎo)致在申請(qǐng)內(nèi)存時(shí)不被允許钮热。
解決方式:
編輯/etc/sysctl.conf 填抬,改vm.overcommit_memory=1
然后sysctl -p使配置文件生效