2016-02-09 10 views
1

Я использую libmemcached C API для взаимодействия с memcached. Время от времени memcached_set не работает с SERVER HAS FAILED AND DISABLED UNTIL TIMED RETRY. Каким может быть общий подход для решения этой проблемы.libmemcached: SERVER HAS FAILED AND DISABLED UNTIL TIMED RETRY

Эта ошибка возникает только на производственных серверах, и она не может быть реализована в среде разработки.

  • Memcached версия: 1.4.7
  • libmemcahced версия: 1.0.2
  • Linux RHEL6 OS
  • GCC 4.7.3

Ниже псевдо фрагмент кода, не могут оставлять цельные код.

bool set_keys(std::string const & query) 
{ 
    // create a DB connection 
    // execute query 
    // consider result of query is as following 
    std::vector<std::tuple<std::string,std::string>>result_set; 
    memcached_return rc; 
    for(auto const & item : result_set) 
    { 
     rc= memcached_set(memc, std::get<0>(item).c_str(), std::get<0>(item).size(), std::get<1>(item).c_str(), std::get<1>(item).size(), (time_t)0, (uint32_t)0); 

     if (rc != MEMCACHED_SUCCESS) 
      fprintf(stderr,"Couldn't store key: %s\n",memcached_strerror(memc, rc)); 
    } 
} 

Одна вещь, которую я заметил, что memcached_server_list_append не используется нигде в коде после творений Memcached связи, это может вызвать проблемы?

+0

Пожалуйста, добавьте комментарий, когда вы проголосуете, станет для меня обучением ... Потому что я понятия не имею, что случилось с вопросом – gjha

ответ

0

Возможно, сервер перегружен. Проверьте загрузку memcached сверху.

Проверьте имена ключей, если они установлены для допустимых значений.

Попробуйте установить Memcached :: OPT_BINARY_PROTOCOL, чтобы включить двоичные данные.