PHP-为什么对memcache的各种操作都返回false?

PHP-为什么对memcache的各种操作都返回false?

泛泛之交 发布于 2017-03-12 字数 636 浏览 1116 回复 1

最近我们的代码做了次改动,对很多之前没有缓存的数据在memcache中做了缓存,大概算下来比之前要多一倍的key的数量。这些key的命名不超过70个字符,存储的都是整数值。奇怪的是当我们把修改的代码放到生产环境运行时,系统刚开始还正常,过了十多秒左右对memcache的所有请求就开始返回false了,不管是get还是set操作都一样。然后我们马上回滚代码,结果又正常了。
一些相关的数据如下:memcached版本1.4.6,memcache扩展版本2.2.6,运行旧代码时memcache服务器的请求频率为每秒300左右,运行新代码时memcache服务器的请求频率大概到了每秒1000。另外在memcache返回false时,还有15%的内存可以分配。
不知道大家有没有遇到过类似的问题,出现这种情况的原因是什么呢?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

偏爱自由 2017-09-10 1 楼

不太明白你的新代码和旧代码之间的具体区别,也不好给出特别到位的回答,这里提供几个可能对你有帮助的失败原因提示:
1,-t (number of threads to use)设置大点,记得在启动时操作
2,set/get方法传递一个空值(NULL),则会导致memcached服务端主动关闭连接,导致失败
3,value过大(1M以上)或者过期时间过长(大于2592000)都会导致set失败。