代码运行一段时间后,会报下面的错误。

[Predis\Connection\ConnectionException]

Error while reading line from the server. [tcp://127.0.0.1:6379]

最初的怀疑是连接数过多,导致连接不上服务器,出现上述错误。查看进程,发现大量redis状态为TIME_WAIT的tcp连接。

首先考虑的是,减少TIME_WAIT的进程,保持随时可以连接到服务器。所以想到的减少TIME_WAIT状态的进程,将进程快速回收。修改内核参数sysctl.conf,net.ipv4.tcp_timestamps=1(1为开启),开启快速回收net.ipv4.tcp_tw_recycle=1。tw_recycle是通过时间戳判断哪个是最新的进程,将不是最新的TIME_WAIT的进程回收,所以需要先开启tcp_timestamps。

修改后观察,果然没有继续报错。

但是使能快速回收TIME_WAIT进程,可能会丢包,导致没有收到应答,不能成功建立连接。但这种办法也不是最佳解决办法,尤其修改内核参数,涉及环节太多,需深入了解才可修改。

底层不去修改,就从predis客户端入手,源码发现有read_write_timeout这个参数,可以设置超时时间,这样读取流数据时就不会报错。Predis作者建议设置关闭redis.conf中timeout(修改timeout 0),表示不关闭与客户端的连接,我感觉这样比较耗费资源,可以适当增加timeout时间。

所以这次暂时是这样解决的,设置read_write_timeout=-1和redis.conf的timeout参数。

其实有很多解决方式,后续可以继续寻找一个更优的方案。

比较了常见的两个php连接redis客户端,phpredis和predis。Laravel中使用的predis,其中连接redis使用connect,当请求结束连接关闭。而phpredis使用pconnect连接,依赖于php-fpm,php-fpm不关闭,连接一直都在。再次使用pconnect,连接会被重用,不会再次新建。

后来查看predis源码发现,persistent这个参数,手册说明都没有提到,但是看字面意思,可能类似于pconnect方式的持久连接,这个后续再研究一下。

laravel redis Error while reading line from the server.的更多相关文章

  1. Laravel Predis Error while reading line from the server.

    问题 Laravel说明文档中的 Redis 发布与订阅案例,命令行运行php artisan redis:subscribe 到60s自动断开并报错 [Predis\Connection\Conne ...

  2. Faster RCNN 运行自己的数据,刚开始正常,后来就报错: Index exceeds matrix dimensions. Error in ori_demo (line 114) boxes_cell{i} = [boxes(:, (1+(i-1)*4):(i*4)), scores(:, i)];

    function script_faster_rcnn_demo() close all; clc; clear mex; clear is_valid_handle; % to clear init ...

  3. make module失败的原因cc1: error: unrecognized command line option “-m64

    cc1: error: unrecognized command line option "-m64"cc1: error: unrecognized command line o ...

  4. linux下安装QT5:error: unrecognized command line option ‘-fuse-ld=gold’

    安装qt时在执行./configure时报错:error: unrecognized command line option '-fuse-ld=gold' 这个错误是qt的一个bug. 在装有gol ...

  5. 编辑sass报错:error style.scss (Line 3: Invalid GBK character "\xE5")解决办法

    cmd.exe /D /C call C:/Ruby23-x64/bin/scss.bat --no-cache --update header.scss:header.css error heade ...

  6. 新部署tomcat,An error occurred at line: [1] index_jsp.java

    环境: centos6.5 32位 oracle jdk 1.8 tomcat 7 问题: yum install tomcat后,返回如下错误: [root@centos]~# curl -v ht ...

  7. cc1plus.exe: error: unrecognized command line option "-fno-keep-inline-dllexport "

    在Windows环境下的控制台上,通过qmake指令编译Qt程序时,出现 cc1plus.exe: error: unrecognized command line option "-fno ...

  8. Solve Error : Undefined function or variable ‘setInitialWorkingFolder’. Error in matlabrc (line 197)

    When compile program using Visual Studio 2015, Matlab 2016b, and OpenCV 3.1.0, one might get the err ...

  9. 编译openwrt时报错:fstools-2018-01-02-11efbf3b/libfstools/overlay.c: At top level: cc1: error: unrecognized command line option '-Wno-format-truncation' [-Werror]

    1. 详细错误信息 [ 11%] Building C object CMakeFiles/fstools.dir/libfstools/overlay.c.o/home/jello/openwrt/ ...

随机推荐

  1. 纪中集训 Day 5

    不知不觉已经day 5了啊 今天早上醒来,觉得要AK的节奏,结果就立flag了 - - 30分QAQ 其实第一题应该得想得到的,还有T2也能够解决的(话说后来看别人的代码写的好赞啊QAQ) 然后下午就 ...

  2. js五种设计模式说明与示例

    第一种模式:js工厂模式    var lev=function(){        return "啊打";      };      function Parent(){    ...

  3. 【转】构建基于CXF的WebService服务

    构建基于CXF的WebService服务 Apache CXF = Celtix+ XFire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF.C ...

  4. 为 instance 配置静态 IP - 每天5分钟玩转 OpenStack(157)

    这是 OpenStack 实施经验分享系列的第 7 篇. 传统运维中为服务器配置静态 IP 是再常见不过的了.但在 OpenStack 环境下只能指定 network,IP 都是 Neutron 从 ...

  5. Java中String类型的部分用法

    1.如何将字符串转换为整型数值? int i = Integer.parseInt("20"); 2.如何用“==”还是equals比较两个字符串? “==”是用来比较俩引用是不是 ...

  6. 使用PHP生成二维码(PHPQRCode)

    关于什么是二维码,可以阅读 http://baike.baidu.com/view/132241.htm 这里就不多讲了,二维码的应用非常广泛,似乎一夜之间渗透到我们生活的方方面面,地铁广告.报纸.火 ...

  7. Struts2学习第一天——struts2基本流程与配置

    struts2框架 什么是框架,框架有什么用? 框架 是 实现部分功能的代码 (半成品),使用框架简化企业级软件开发 ,提高开发效率. 学习框架 ,清楚的知道框架能做什么? 还有哪些工作需要自己编码实 ...

  8. Vue学习之路---No.1(分享心得,欢迎批评指正)

    首先为了打消大家对Vue.js存在的顾虑,先通过大家所熟知的JQ作为对比. 都知道JQ的语法相对简单.清楚.使用方便.功能齐全: 那么Vue.js呢,同样的,Vue.js与JQ在很多地方都是相同之处, ...

  9. String类的indexOf方法的用法和举例

    2017年3月3号博主第一次去郑州互联网公司面试,背景是这样的我先前去了农大龙子湖校园招聘投简历,然后第二天去面试了那经历可以说是很失败的一次面试,当然这跟自己的水平有关了接下来重点讲一下面试的题目: ...

  10. 专题:DUILIB Win32 透明效果

    Win32 透明效果相关基础知识 Layered Windows 分层窗口.这是Windows2000开始引入的概念,重新定义了窗口的Hit Testing方法,以前都是把窗口按rectangle的方 ...