python redis模块connectionerror_PHP程序连接Redis报read error on connection问题
線上PHP程序動不動就報PHP Fatal error: Uncaught RedisException: read error on connection錯誤,就是連接Redis在那么1秒鐘有問題,我們的架構是:
PHP程序—>twemproxy代理—>Redis實例(5個節點)
PHP-FPM的超時時間是1s鐘,也就是說如果PHP程序執行超過1s鐘就會中斷,另外由于Redis是單線程的,所以如果一個請求的時間太久就會造成Redis假死狀態,接收不了其他請求,繼而就會造成PHP程序連接報錯。
首先接收到錯誤日志是在ELK上面,如下圖:
看一下報錯的時間和報錯數量,報錯的數據有3000多個,而報錯時間都在14:41分。
然后看了twemproxy的日志。
可以看出執行時間都是1s多,肯定是不正常的,正常情況下一個Redis Get請求大概在20ms左右。同時可以看出twemproxy報錯的后端服務器都是同一個(一共有5個后端)。
然后去172.18.129.135:6546這個實例上面查看慢日志。
127.0.0.1:6546> SLOWLOG get 1
1) 1) (integer) 50
2) (integer) 1470724891 #執行時間戳,轉換為正常時間為2016/8/9 14:41:31;
3) (integer) 1761020 #執行時間,微秒;
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#執行時間戳,轉換為正常時間為2016/8/9 14:41:31;
3)(integer)1761020#執行時間,微秒;
4)1)"ZRANGE"
2)"summer_user_rank"
3)"0"
4)"-1"
5)"WITHSCORES"
看這條慢日志的時間剛好與ELK日志中的報錯時間相同,同時執行時間為1.7秒。所以接下來就是找研發確定這個Key,改進問題。
如果您覺得本站對你有幫助,那么可以支付寶掃碼捐助以幫助本站更好地發展,在此謝過。
總結
以上是生活随笔為你收集整理的python redis模块connectionerror_PHP程序连接Redis报read error on connection问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql导入excel数据失败_nifi入
- 下一篇: 深入浅出谈cuda 书_入门和基础——9