Что вызывает memcached ошибку 10 ("ошибка сервера")?

Используя PHP, я сохраняю массив в memcached как часть следующего процесса:

  1. Получить массив из memcached
  2. Выполнять операции над первым элементом в массиве
  3. Обновление массива на основе результата операций
  4. Установить массив в memcached

Массив содержит URL-адреса в виде строк.

Операция установки memcached не выполняется для больших размеров массива. Совсем недавно это не удалось для массива, содержащего 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 не очень помогает при этой ошибке, а сама ошибка понятна нечетко.

Что может быть причиной для memcached ошибки 10?

2 ответа

Решение
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);

В моем случае, я полагаю, это произошло потому, что данные превысили глобальный максимум для объекта memcache (1 МБ).

Другие вопросы по тегам