後臺服務運行後無端中止運行,緣由不明

      服務器清空全部數據,啓動運行,初開始運行時,一切正常,數據也正確,但運行一段時間後,服務中止運行,數據顯示也是錯亂的。 html

      通過10幾天的觀察, 發現一旦Redis數據量增加到必定時間後,整個服務莫名地退出,找不到緣由,覺得是 類中的靜態標誌位 _IsAutoMonitor 等在不一樣程序域中引發錯亂,但實際觀察後,取消註釋後,故障現象依舊。 數據庫

    從新 清空 Redis數據後,從新啓動服務,又能夠運行一段時間,但隨時時間推移,服務又出現故障。服務歷來沒有正常運行超過24小時,隨時須要人員維護,搞得疲憊不堪。 緩存

    根據現象分析,必定與 Redis相關,但找不到明確的緣由,故障沒法排除。 服務器

    後從新整理了數據服務器,不斷優化代碼,但願排除代碼中的故障,優化代碼性能,獲得的結果是,代碼性能獲得不斷的提升,但故障卻沒有根本排除。ide

 

    今天又清空數據雞窩,出現瞭如下異常提示:性能

     StackExchange.Redis.RedisConnectionException: No connection is available to service this operation: EVAL; IOCP: (Busy=0,Free=1000,Min=16,Max=1000), WORKER: (Busy=52,Free=971,Min=16,Max=1023), Local-CPU: n/a 優化

 

    再往前追溯,獲得如下異常:this

    2019-03-21 18:40:35,245 [146] ERROR IBeam.Cache.Redis.RedisProvider [(null)] - InternalGet Key=GqXhzUnqHMxC0LahfrQWCiGVKck=,Error=StackExchange.Redis.RedisServerException: ERR Error running script (call to f_7b41d432ab2c09c0e216c48f24b3a9a6260229b5): @user_script:5: @user_script: 5: -MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.    spa

 

    說明是 Redis作快照落盤存儲時出錯,致使了中止服務。 修正這個問題,能夠執行以下命令命令行

    命令行修改方式示例: 127.0.0.1:6379> config set stop-writes-on-bgsave-error no 

    使Reids在寫出錯時仍然能夠繼續工做。所以,在實際的運行環境工做中,安裝了Reids數據庫時,應該首先配置這此項,不能由於 寫 錯誤使用服務中止。在只看成Cache應用的場景下,也能夠索性關閉 持久化存儲。 

    找到緣由後,全部問題獲得了還原。 

 

   另外,Redis 單機緩存數在 100萬條時,性能忽然降低,致使獲取 鎖時 等待時間過長,或沒法獲取鎖,此時,將緩存數據清空時,性能恢復。 

   若是應用或服務一切運行正常,但不知不覺中CPU佔用忽然下降,進程工做正常,並無任何異常,此時必定是Redis內存佔用達到閥值,在進行內存交換,將內存中的數據寫到磁盤中,此時Redis的工做效率很是危險。或不可恢復。請參考: Redis 內存引發效率降低  Redis基本概念與配置

    處理方法爲:若是隻作爲緩存使用,能夠關閉 持久化存儲,而且 設置 Key的過時策略爲:allkeys-lru 

相關文章
相關標籤/搜索