当尝试从memcached获取值时,我的程序失败了,此错误出现在LOG上:MEMCACHED_CONNECTION_SOCKET_CREATE_FAILURE。
日志来自memcached strerr(11)。这个问题很少发生,并且很难有意复制(例如:通过减少内核上的ulimit设置)。关于检查什么的任何想法将不胜感激。我已经尝试过strace -p [the memcached instance's pid] , dmesg, lsof | grep socket
,但找不到导致此问题的根本原因。
unix_socket_connect
调用的 memcached_get
的代码:
static memcached_return_t unix_socket_connect(memcached_server_st *ptr)
{
struct sockaddr_un servAddr;
if (ptr->fd == -1)
{
if ((ptr->fd= socket(AF_UNIX, SOCK_STREAM, 0)) < 0)
{
ptr->cached_errno= errno;
return MEMCACHED_CONNECTION_SOCKET_CREATE_FAILURE;
}
}
//......
}