最近的項目上使用ServiceStack.Redis上了redis緩存,其中遇到了很多問題。。 比如說 某一天發現redis做的緩存竟然失效了,然后查了下日志 報錯max number of clients reached, sPort: 0, LastCommand: 。。首先考慮的是是不是項目中redis使用完后沒有dispose..結果查了半天沒發現有哪里忘記dispose。。 之后覺得是redis服務端可能出了問題 重啟了下,過了段時間查看redis狀態 info指令。。
可以看到connected_clients很高 。。多次監控后發現雖然有下降 但是還是在4000以上。
之后在用client list 指令 查看客戶端連接情況
其中idle(以秒計算的空閑時長)竟然這么長時間。。很多空閑連接都沒有被及時釋放掉從而導致connected_clients非常高
查看redis的配置timeout (當客戶端閑置多長時間后關閉連接,如果指定為0,表示關閉該功能)
然后設置timeout
再次查看connected_clients
瞬間就降下來了。。 至此問題解決!