代码改变世界

我本地好好的,为何上线出问题——memcache赋值失败

2020-08-29 12:07  极无宪  阅读(209)  评论(0)    收藏  举报

最近有一个项目使用了memcache,现在测试通过,上线一段时间之后,出了问题。
当我们遇到这种线下或者是测试环境没问题线上出错的之后,我们要定要找到他们之间区别,往往就是环境的不同,数据的不同导致的运行不同。
而不能认为很神奇、奇怪、吊轨、见鬼,找到其中的线上与线下的特征区别是解决问题的关键。
经过分析是因为memcache一个项目的默认缓存是1M,线上出错是因为一个项目里存储的内容太多导致存储失败,读取的时候获取到null的值。
线下测试的时候,没有使用那么多的数据测试过。
解决这个问题的方法有两种。
第一:修改默认配置,
windows下可以 memcached 的配置项, 可以在命令行中执行 regedit.exe 命令打开注册表并找到 "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached" 来进行修改。

如果要提供 memcached 使用的缓存配置 可以修改 ImagePath 为:

"c:\memcached\memcached.exe" -d runservice -m 512 -I 10M
-m 512 M,代表所有的数据最大缓存512兆
-I 10m,代表单个数据最大缓存10兆

修改完了之后,重启一下memcache服务,大功告成。