Redis效能調優:儲存SNAPSHOT對效能的影響,redissnapshot
前一段時間,開發環境反饋,Redis伺服器訪問非常慢,每個請求要數秒時間,重啟之後2~3天又會這樣。
我查看了一下Linux的效能,沒有什麼問題。通過
# redis-cli --latency
發現訪問Redis確實很慢,執行info要幾秒時間。裡面有個參數已串連的用戶端幾萬個,通過
Redis>client list
查看到很多client的age都很大,一直沒有釋放。於是懷疑是不是和這個有關,因為版本是2.8.6,無法通過client一次性kill掉所有的串連,只能寫一個程式,一個一個地kill掉(
CLIENT KILL addr:port
)。但問題依然存在。
於是進一步查看設定檔,發現SHNAPSHOT是預設開啟狀態,
save 900 1
save 300 10
save 60 10000
因為我們緩衝是用於Session儲存,不推薦快照儲存,特別是在Redis是VM機器上,對整體的效能影響會很大。於是參考我們的手冊注釋:
################################ 快照 #################################
# 儲存資料到磁碟,格式如下:
# save <seconds> <changes>
# 指出在多長時間內,有多少次更新操作,就將資料同步到資料檔案rdb。
# 相當於條件觸發抓取快照,這個可以多個條件配合
# 比如預設設定檔中的設定,就設定了三個條件
# save 900 1 900秒內至少有1個key被改變
# save 300 10 300秒內至少有300個key被改變
# save 60 10000 60秒內至少有10000個key被改變
# Session快取服務器不使用快照,都注釋
# save 900 1
# save 300 10
# save 60 10000
重啟Redis之後,觀察了一個月時間,再沒有反饋到效能問題了。
另外在沒有使用用戶端的PUB/SUB的情況下,建議參考下面的參數,設定用戶端的連線逾時,在300毫秒後,如果不用,服務端會自動關閉串連,釋放資源。預設是關閉的。
# 設定用戶端串連時的逾時時間,單位為秒。當用戶端在這段時間內沒有發出任何指令,那麼關閉該串連
# 0是關閉此設定
# 推薦5分鐘。
timeout 300
# TCP keepalive
# 在Linux上,指定值(秒)用於發送ACKs的時間。注意關閉串連需要雙倍的時間。預設為0。
# 推薦60。
tcp-keepalive 60
註:
Redis 2.8.12已經可以通過client類型,一次性kill到所有相關的串連。
急需SQL server 2005的介紹
1.Service的增強功能;
2.資料庫引擎增強功能;
3:資料庫提供者方面的增強功能;
4:Analysis Services的增強功能;
5:Integration Services的增強功能;
6:全文檢索搜尋的增強功能;
7:Notification Services的增強功能;
8:複製增強;
9::Reporting Services的增強功能;
10:工具和使用工具的增強功能;
寫入密集的情況下flask怎最佳化sqlite的性可以?
不限於flask, 很多應用都需要這樣的最佳化
1. 使用log而不是資料庫, 比如使用nginx的empty_gif, 然後記錄大量log, 用指令碼大量匯入資料庫或者運算好結果, 再儲存到資料庫
如果你的資料量足夠大, 那麼你應該不止一台web server, 你需要批處理好幾台機器上的log.
這些未經處理資料你可以儲存在s3上, 以後作為資料倉儲使用.
2. 使用記憶體, queue server或者redis那樣的記憶體方案也同樣是批處理資料, 寫指令碼. 不過這個受到記憶體大小限制, 比較貴, 需要經常跑指令碼.