使用PHP连接redis后,timeout连接太多的解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用PHP连接redis后,timeout连接太多的解决方案相关的知识,希望对你有一定的参考价值。

    这个问题,大家在使用php redis之后肯定都会遇到。所以本菜本着虚心求教的原则,又在网上四处求教。得到的答案,无非是以下两种:

1、redis没有主动close。

    事后发现,这个答案纯属以讹传讹,胡说八道。

 

2、配置/etc/sysctl.conf,更改如下配置:

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 20

    关于这个方案,虽然比较靠谱,但没完全正中靶心。执行/sbin/sysctl -p之后,发现timewait状态的连接没有改善。

 

    经过一番查找,终于本菜终于找到了原因,解决方案的配置如下:

/etc/sysctl.conf

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_timestamps = 1

net.ipv4.tcp_fin_timeout = 20

配置完成之后,执行/sbin/sysctl -p,再次运行redis,问题解决。

 

资料参考:

http://www.2cto.com/net/201503/381132.html    服务器tcp连接timewait过多优化及详细分析

 

以上是关于使用PHP连接redis后,timeout连接太多的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

解决redis上显示timeout连接超时

Jedis连接redis偶尔connection timeout

laravel 配置redis后怎样使用

php频繁刷新网页运行一段时间后出现数据库连接错误?

性能测试案例:redis获取不到连接池,Timeout waiting for idle object

PHP+Redis 发布订阅