导致内存缓存错误 10(“服务器错误”)的原因


What causes memcached error 10 ('server error')?

使用 PHP,我在 memcached 中保留了一个数组,作为以下过程的一部分:

  1. 从内存缓存中获取数组
  2. 对数组中的第一项执行操作
  3. 根据操作结果更新阵列
  4. 在内存缓存中设置数组

该数组包含字符串形式的 URL。

对于大型数组大小,内存缓存集操作失败。最近,对于包含 78175 个 URL 的数组,它失败了。

我从memcached得到的错误有点通用:

Result code: 10
Result message: SERVER ERROR

libmemcached 文档对于这个特定错误几乎没有用处。

我使用的代码非常简单:

public function save() {
    $this->memcached->set($this->key, $this->items);       
}    
protected function load() {
    $this->items = $this->memcached->get($this->key);        
    if (!$this->items) {
        $this->items = array();
    }
}

libmemcached 文档对此错误几乎没有直接帮助,错误本身是可以理解的模糊的。

内存缓存错误 10 的原因可能是什么?

就我而言,我相信这是因为数据超过了 memcache 对象的全局最大值 (1MB)。

Error is Memcached::OPT_BUFFER_WRITES - 10
$this->_Memcache =& new Memcached();
$this->_Memcache->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_PHP);
$this->_Memcache->setOption(Memcached::OPT_NO_BLOCK, true);
$this->_Memcache->setOption(Memcached::OPT_TCP_NODELAY, true);
$this->_Memcache->setOption(Memcached::OPT_BUFFER_WRITES, true);
$this->_Memcache->setOption(Memcached::OPT_SERVER_FAILURE_LIMIT,3);
$this->_Memcache->setOption(Memcached::OPT_HASH,Memcached::HASH_CRC);