5
apache2: libmemcached/storage.cc:341: memcached_return_t memcached_send_ascii(memcached_st*, memcached_server_write_instance_st, const char*, size_t, const char*, size_t, time_t, uint32_t, uint64_t, bool, bool, memcached_storage_action_t): Assertion `memcached_failed(rc)' failed.

我不知道是什么导致这个抛出,什么时候抛出,或者为什么。

这是一个致命的错误吗?如果是这样,有谁知道我可以在哪里修复它?

4

4 回答 4

7

SugarCRM Community Edition v6.5.15(Build 1083)也有同样的问题。我已经修复了这个强制 memcached 守护进程与客户端(包括 libmemcached C++ 客户端)协商二进制协议的问题。这对我有用,试试吧。

在 Debian Wheezy 中,memcached 软件包在/etc/memcached.conf有一个配置文件。在文件末尾添加这一行:

-B binary

然后重启memcached服务

service memcached restart

更多信息: http: //linux.die.net/man/1/memcached

于 2013-10-21T20:43:14.690 回答
6

我会查看 libmemcached 中 storage.cc 的第 341 行。libmemcached 在输入验证方面做得不好,所以取决于说......你的键值(不要在键或键命名空间中使用空格)你可能会遇到很多错误问题。

查看源代码,libmemcache 在发送命令后期待 memcache 服务器的回复,但发送命令失败。所以它可能有很多原因(密钥错误、连接错误等)。

http://bazaar.launchpad.net/~tangent-trunk/libmemcached/1.0/view/head:/libmemcached/storage.cc

于 2013-04-17T18:33:36.170 回答
0

首先 - 你应该检查连接限制。

当 memcached 服务达到连接限制 (-c 参数) 时会出现此错误。默认情况下,限制设置为 1024 个连接。但是,如果您尝试进行多线程处理,则可能很快就会达到极限。

默认配置路径:/etc/sysconfig/memcached

于 2014-09-10T10:39:35.360 回答
-1

在开发库时,我遇到了完全相同的错误(“apache2”头除外),这是一个与线程相关的错误。memcached 客户端的一个实例被多个并发线程访问,因此客户端和服务器恰好处于不一致的状态。因此,在 libmemcached 中对返回代码 的断言rc失败。据我所知,定义连接的 libmemcached 内部结构不是线程安全的。

同时,很难想象如何在不提供线程实用程序的 PHP 中发生这种情况,可能是线程错误。无论如何,您应该检查您的代码是否使用 memcached 连接进行异常操作。

于 2014-07-25T09:29:38.827 回答