Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Memcache::set()断开的管道_Php_Memcached - Fatal编程技术网

Php Memcache::set()断开的管道

Php Memcache::set()断开的管道,php,memcached,Php,Memcached,一般来说,Memcache正在工作。。。但我的日志中多次出现这种情况: Memcache::set()[Memcache.set]:发送 共8192个字节失败,错误号为32 断管 (字节数更改) PHP5.3级(v2.2.5-最新版本) 什么是破裂的管道,为什么会发生这么多,它可以改进吗?除了getextendedstats()之外,我有类似的情况 这是我认为合乎逻辑的观点。 我的假设是memcached配置不正确或存在网络问题,但我在本地运行memcached,所以不确定这里是否存在网络问题

一般来说,Memcache正在工作。。。但我的日志中多次出现这种情况:

Memcache::set()[Memcache.set]:发送 共8192个字节失败,错误号为32 断管

(字节数更改)

PHP5.3级(v2.2.5-最新版本)


什么是破裂的管道,为什么会发生这么多,它可以改进吗?

除了getextendedstats()之外,我有类似的情况

这是我认为合乎逻辑的观点。

我的假设是memcached配置不正确或存在网络问题,但我在本地运行memcached,所以不确定这里是否存在网络问题


我将尝试解决问题,并让您知道问题出在哪里。

一般来说,当我看到断管错误时,是在极高的负载下。你是这样吗?有时,简单的参数调整可以解决问题。如果你允许更多的连接到某个东西上,而不是某个东西可以处理的连接,你经常会遇到断管错误。

我已经对此进行了很多研究和阅读,听到了很多关于这方面的困惑。服务器端的Memcached选项上几乎没有文档。我发现了一个隐藏的gem,它居然由MySQL托管。看看

有几个潜在原因,其中一些令人信服地引用了:

  • OS级别上的ulimit设置为阻止附加连接的特定级别
  • 连接数已达到最大值
  • 它只会在高负载时发生(抱歉,但是duh!)
我无法理解,也无法想象上述情况在大多数情况下是真实的。在我们的例子中,当应用程序在自动模式(在-vv详细模式下,我们称之为ascii写入)上运行时,我们切换到了二进制模式连接选项。一旦我们打开binary选项,写操作都会失败,从而导致管道破裂

至于max connections衰减,当您在telnet中查看统计数据时,可以检测到它们。寻找以下信息

STAT accepting_conns 1
STAT listen_disabled_num 0
如果
listen disabled\u num
为0,则很好。这意味着自memcached实例启动以来,没有丢弃连接

另外,请尝试使用以下Memcached选项优化您的连接,至少在PHP中,我们使用以下选项:

$this->m = new Memcached();
$this->m->setOption(Memcached::OPT_TCP_NODELAY, true);
$this->m->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);
$this->m->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_IGBINARY);
我只能说,在应用程序端、memcached服务器端试用一些设置组合,并更改应用程序上的其他默认设置(例如memcached.sess_lock_wait on memcached.ini文件,有关更多信息,请参阅
php-I | grep memcached


祝你好运

这与连接有关,因为php试图连接不同服务器中的memcache实例。
$this->m = new Memcached();
$this->m->setOption(Memcached::OPT_TCP_NODELAY, true);
$this->m->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);
$this->m->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_IGBINARY);