libmemcached:服务器失败并禁用,直到定时重试
libmemcached : SERVER HAS FAILED AND DISABLED UNTIL TIMED RETRY
我正在使用 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
以下是伪代码片段,不能post整个代码。
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 连接后没有在代码中的任何地方使用,这会导致问题吗?
可能是服务器超载了。通过top查看memcached的加载情况。
设置有效值时检查键名称。
尝试设置Memcached::OPT_BINARY_PROTOCOL,启用二进制数据。
我正在使用 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
以下是伪代码片段,不能post整个代码。
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 连接后没有在代码中的任何地方使用,这会导致问题吗?
可能是服务器超载了。通过top查看memcached的加载情况。
设置有效值时检查键名称。
尝试设置Memcached::OPT_BINARY_PROTOCOL,启用二进制数据。