可以看到,ejabberd 是 4 月 20 日啟動的,持續運作了一天多,生成了 125 個 crashdump 檔案,但 ejabberd 程序還在。
除了上述錯誤資訊外,之前還看到下面這種
結論: 可以參考 erlang 手冊中關于 erl_crash.dump 的相關說明,截圖如下:
懷疑運作環境中存在版本不一緻問題。
通過針對抓包,日志,和網絡連接配接等進行分析,目前得出如下結論
shutdown 指令來自于 127.0.0.1 <-> 127.0.0.1 的 tcp 連接配接;
redis 接收 shutdown 後會自行關閉 socket ,是以 time_wait 狀态在 redis 側;
每 55 秒左右 shutdown 一次;
結論:之前就懷疑是由于運維人員的腳本檢測導緻的問題,結果不幸命中~~
該腳本用于進行配置資訊檢測和變更
該腳本用于檢測 redis 程序運作情況(在某些檢測狀态下進行強殺)
原因:在第一個腳本中針對配置檢測的指令存在錯誤(上面已修正,錯誤太低級就不貼了),導緻一直認為配置存在問題,進而在一定檢測周期之後,重新開機 redis 。