之前寫過一篇博客是關於記錄日志的簡單方式的 主要就是 應用->redis->logstash->elasticsearch 整個流程的配置方法和過程的
https://www.cnblogs.com/zhyg/p/6994314.html
記一次logback傳輸日志到logstash根據自定義設置動態創建ElasticSearch索引
雖然我們部分線上應用使用 redis單節點 logstash 也是使用單節點基本穩定流暢並且幾乎不丟日志(單節點問題就不說了肯定有單點故障之后在分析)
上面的兩個單節點 一天承受1-3億條日志是沒有問題的前提是並發量不要太大
可是 可是 tmd我今天就遇到了
主要分享一下解決方案
本方案同樣是兩個單節點
先說下今天發生的北京情況
我們的業務服務有些擠壓這個時候我們把處理節點線程加多 來處理更大的量可怕的是記錄日志的並發量也隨之加大導致單節點redis承受不了
我最先想到的方案是重啟刪除aof日志 讓redis不在加載日志話存日志節省內存空間,但是試了幾次之后不行 並發量導致寫日志實在太大一會又受不了
然后在想就是 限制內存 但是同樣不能滿足 因為redis 向下傳輸的時候如果下游不能接受 會緩存到aof日志里面同樣會吃滿內存加載aof日志的
隨后就限制內存取消redis寫aof日志然后重啟redis ,這樣果然可以 沒問題雖然有可能丟失一些日志但是日志我是允許一部分丟失的
優化后的redis占用內存明顯下降
之前內存可是沾滿服務器的內存的 (redis我是用docker部署的)
但是隨之而來的是另外一個問題
雖然吧redis壓力降下來了但是 logstash壓力上來了
logstash直接給我報內存溢出
我去 我一看 logstash才給了1G內存
沒辦法 調整一下logstash內存
調整 jvm.options 文件內存為2g
現在運行平穩 非常快
但是出問題就會丟些相關日志
希望大家出現類似現象有相關的處理思路