当前位置:首页 > php > 正文内容

php中Memcache::get(): Server...failed with: Failed reading line from stream

phpmianshi5个月前 (04-29)php179

背景

最近sentry报告PHP的memcache客户端php-memcache经常出 现断连接的问题:

PHP Notice:  Memcache::get(): Server ………. (tcp 11211) failed with: Failed reading line from stream (0) with pecl-memcache 3.*

分析

这个问题由来已久,我们的解释是MemcacheDB的延迟受磁盘写入影响 (checkpoint时, memtrickle时)会有一点的浮动。虽然整体延迟不是很高,但是 相比于Memcached纯内存稍高。而PHP memcache宏观上认为是cache行为,会对延 迟稍高的连接扔掉(其认为延迟高就失去cache的意义)。

解决办法

使用andreiz的php-memcached:

http://pecl.php.net/package/memcached
http://github.com/andreiz/php-memcached/tree/master

php-memcached是brian的libmemcached库的php wrapper. libmemcached是一个 前途光明的memcache协议c/c++客户端库,未来对二进制版本的支持,另外极有可能包括MemcacheDB的扩展命令rget等的支持(已经联 系好作者提交patch)

我对php-memcache和php-memcached两个客户端作了简单的评估。分别set 1000 万条200字节的value,其中php-memcache表现得脆弱,连接频频断掉。而php- memcached依然保持坚挺,从未断过。


版权声明:本文由PHP面试资料网发布,如需转载请注明出处。
分享给朋友:

相关文章

phpfpm中status状态说明详解

背景phpfpm跟nginx一样有个status状态监控页。可能通过status状态监控页了解phpfpm的运行状态,如并发数,总进程数等。启用php-fpm状态功能# vim /...

laravel中设置数据库读写分离后强制使用主库查询

背景在项目比较火爆,QPS比较高时,可以设置读写分离来扩容数据库,减少数据库的压力,但是有些业务可能对数据一致性要求比较高,比如支付。当支付成功时,再去查询订单状态时,如果查询走的从库,如果出现主从延...

从0到1搭建基于swoole的websocket服务

源码安装wget  https://github.com/swoole/swoole-src/archive/v4.5.7.tar.gz tar -xzvf ...

PHP中self与static区别和联系

PHP官方也说过,大概意思是说self调用的就是本身代码片段这个类,static - PHP 5.3加进来的只得是当前这个类,有点像$this的意思,static调用的是从堆内存中提取出来,访问的是当...

从0到1搭建TP5.1+Swoole3.5.15环境

安装首先按照Swoole官网说明安装swoole扩展,推荐新手可以直接使用pecl install swoole#会安装最新的稳定版(截至本文发布最新版本是4.0.3版本)或者源码...

PHP红包分配算法

<?php /**  * User: phpmianshi.com   * Date: 2020/3/31 &nbs...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。