LIBMEMCACHED :服务器已失败并禁用,直到定时重试

libmemcached : SERVER HAS FAILED AND DISABLED UNTIL TIMED RETRY

本文关键字:定时 重试 服务器 失败 LIBMEMCACHED      更新时间:2023-10-16

我正在使用libmemcached C API与memcached进行交互。偶尔memcached_set会因SERVER HAS FAILED AND DISABLED UNTIL TIMED RETRY而失败。处理此问题的一般方法是什么。

此错误仅发生在生产服务器上,在开发环境中不可产生。

  • 内存缓存版本 : 1.4.7
  • libmemcahced 版本:1.0.2
  • Linux RHEL6 OS
  • 海湾合作委员会 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: %sn",memcached_strerror(memc, rc));
   }
}

我注意到memcached_server_list_append在创建 memcached 连接后没有在代码中的任何地方使用,这会导致问题吗?

服务器可能过载。检查顶部的内存缓存的加载。

在设置有效值时检查键名称。

尝试设置 Memcached::OPT_BINARY_PROTOCOL,以启用二进制数据。