專案中一直使用celery來做非同步任務的執行, broker使用的是redis。 最近每天都會有幾次redis(頻寬10m)寫入頻寬超過80%報警, 報警的時候檢視redis log 沒有發現大量資料寫入。經過仔細檢視發現大量下面的訊息:
這條命令應該是celery在 subscribe result(猜測, 具體邏輯不清楚)。 celery result 裡儲存了40w+的資料, 突然想到是不是這條命令是慢查詢,導致寫操作有積壓。 經過檢視, 發現果然這個命令報了好多慢查詢, 查詢時間在800ms左右。
解決方法:
celery 配置增加:task_ignore_result = true
發現celery result 在逐漸減少。 經過大概一天的時間, celery result 為0。 這期間沒有發生寫入頻寬報警。 寫入頻寬一直維持在10%以下。
redis版本問題解決
最近在研究redis的集群,redis官方提供了redis trib.rb工具,但是在使用之前 需要安裝ruby,以及redis和ruby連線 yum y install ruby ruby devel rubygems rpm build gem install redis 其中 gem inst...
oom問題解決
dalvik虛擬機會為應用程式分配固定大小的heap 如果使用超過了這個heap的大小,且沒有可被 物件,就會報oom。多張較大會迅速占用空間造成oom。我們可以使用一下的方法來減少這種情況的產生 1.減少單張的大小,根據螢幕大小來對bitmap做resize。private void setima...
too many open files問題解決辦法
今天用 往liunx中寫檔案,檔案很多 執行一會就日誌上就報錯 too many open files 結果找了半天才解決這個問題,現在給大家分享一下。首先用 ulimit a 命令看看linux的open files值是多少,結果乙隻有1024,不夠用的。然後修改linux的配置檔案,修改 etc...