2013-11-02 72 views
0

我們使用redis 2.6.14和10GB RAM作爲緩存服務器,phpredis作爲redis客戶端。我們都從一個相同的redis服務器寫入和讀取數據。redis中的ping()是做什麼的?

的問題是,當流量都很高,我們仍然可以連接()這臺機器,但中國平安(),它會返回false,是隻假的。 connected_client低於100,used_memory低於1GB,qps大約爲1000,這一切看起來都很好。

我們已經檢查了幾乎所有我們知道的東西,除了ping()在phpredis/redis中做什麼?在什麼情況下ping()會返回一個錯誤?實際上,當ping()錯誤時,我們的機器仍然是可連接的。 https://github.com/nicolasff/phpredis#ping

任何想法?

我已經從連接具有結構轉換()到pconnect()解決了這個問題;

+0

你確定特定連接可用於其它命令?它會自動重新連接嗎? – Gustav

回答

0

首先,ping做到這一點 - http://redis.io/commands/ping 在你的情況,我認爲服務器過載與硬盤交互操作。

什麼是你在/etc/redis.conf save設置?

對我來說默認的工作正常。 我想你只需要這個設置

save 180 1

這將充分數據庫保存每3分鐘,如果至少1個數據元素已經改變

+0

我們每900秒做一次rbd轉儲至少一次更改。 1800年的改變會更好嗎? –

+0

「Redis服務器走開了」,我在ping()上得到了這個異常。 –

+0

> 1800年的改變會更好嗎? 這取決於做一個完整的數據庫轉儲 >「的Redis服務器走了」,我得到了平此異常()所需要的時間;它意味着redis被強制起來。我認爲有兩個可能性。不太可能 - 在redis客戶端實現錯誤,更可能 - redis服務器不可能配置並掛斷...或者ping命令在配置中被重載... – vodolaz095

相關問題