python redis模块connectionerror_PHP程序连接Redis报read error on connection问题
線上PHP程序動(dòng)不動(dòng)就報(bào)PHP Fatal error: Uncaught RedisException: read error on connection錯(cuò)誤,就是連接Redis在那么1秒鐘有問(wèn)題,我們的架構(gòu)是:
PHP程序—>twemproxy代理—>Redis實(shí)例(5個(gè)節(jié)點(diǎn))
PHP-FPM的超時(shí)時(shí)間是1s鐘,也就是說(shuō)如果PHP程序執(zhí)行超過(guò)1s鐘就會(huì)中斷,另外由于Redis是單線程的,所以如果一個(gè)請(qǐng)求的時(shí)間太久就會(huì)造成Redis假死狀態(tài),接收不了其他請(qǐng)求,繼而就會(huì)造成PHP程序連接報(bào)錯(cuò)。
首先接收到錯(cuò)誤日志是在ELK上面,如下圖:
看一下報(bào)錯(cuò)的時(shí)間和報(bào)錯(cuò)數(shù)量,報(bào)錯(cuò)的數(shù)據(jù)有3000多個(gè),而報(bào)錯(cuò)時(shí)間都在14:41分。
然后看了twemproxy的日志。
可以看出執(zhí)行時(shí)間都是1s多,肯定是不正常的,正常情況下一個(gè)Redis Get請(qǐng)求大概在20ms左右。同時(shí)可以看出twemproxy報(bào)錯(cuò)的后端服務(wù)器都是同一個(gè)(一共有5個(gè)后端)。
然后去172.18.129.135:6546這個(gè)實(shí)例上面查看慢日志。
127.0.0.1:6546> SLOWLOG get 1
1) 1) (integer) 50
2) (integer) 1470724891 #執(zhí)行時(shí)間戳,轉(zhuǎn)換為正常時(shí)間為2016/8/9 14:41:31;
3) (integer) 1761020 #執(zhí)行時(shí)間,微秒;
4) 1) "ZRANGE"
2) "summer_user_rank"
3) "0"
4) "-1"
5) "WITHSCORES"
1
2
3
4
5
6
7
8
9
127.0.0.1:6546>SLOWLOGget1
1)1)(integer)50
2)(integer)1470724891#執(zhí)行時(shí)間戳,轉(zhuǎn)換為正常時(shí)間為2016/8/9 14:41:31;
3)(integer)1761020#執(zhí)行時(shí)間,微秒;
4)1)"ZRANGE"
2)"summer_user_rank"
3)"0"
4)"-1"
5)"WITHSCORES"
看這條慢日志的時(shí)間剛好與ELK日志中的報(bào)錯(cuò)時(shí)間相同,同時(shí)執(zhí)行時(shí)間為1.7秒。所以接下來(lái)就是找研發(fā)確定這個(gè)Key,改進(jìn)問(wèn)題。
如果您覺得本站對(duì)你有幫助,那么可以支付寶掃碼捐助以幫助本站更好地發(fā)展,在此謝過(guò)。
總結(jié)
以上是生活随笔為你收集整理的python redis模块connectionerror_PHP程序连接Redis报read error on connection问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: sql导入excel数据失败_nifi入
- 下一篇: 动态规划算法php,php算法学习之动态