11. Fluentd部署:性能優化


如果你的日志請求達到了5000條/秒,這里描述的技術點可用於調優。

  1. 檢查操作系統配置
    在安裝Fluentd之前,進行操作系統參數優化。

  2. 通過top查看系統瓶頸
    如果發現Fluentd運行效率不佳,可先查看一下當前系統瓶頸在哪里:CPU?內存?磁盤IO?

  3. 避免額外運算
    不要在Fluentd中執行過多的額外運算。這其實也是一個通用的使用建議。雖然Fluentd可以進行各種過濾、格式化等操作,但是過於復雜的配置難於理解和維護,也會降低其性能和健壯性。配置文件應保持盡可能的簡單。

  4. 使用flush_thread_count參數
    如果Fluentd輸出的日志目的地是一個遠端的服務器或者服務,可打開配置文件中的flush_thread_count參數,此參數默認值為1. 使用多個flush線程會掩蓋網絡延遲,增加並發輸出。
    該參數適用於所有的output插件。參考配置如下:

<match test>
  @type output_plugin
  <buffer ...>
    flush_thread_count 8
    ...
  </buffer>
  ...
</match>
  1. 對S3/TD插件使用外部gzip
    Ruby使用GIL控制多線程的執行,同一時刻只能有一個線程運行,這在一定程度上降低了系統的並發性能。
    S3/TD插件允許異步調用外部的gzip程序來進行數據壓縮,這可釋放CPU的部分算力來執行其他處理邏輯。
    配置如下所示:
# S3
<match ...>
  @type s3
  store_as gzip_command
  <buffer ...>
    flush_thread_count 8
    ...
  </buffer>
  ...
</match>

# Treasure Data
<match ...>
  @type tdlog
  use_gzip_command
  <buffer ...>
    flush_thread_count 8
    ...
  </buffer>
  ...
</match>
  1. 減少內存使用
    Ruby可配置GC參數以優化內存使用性能,可通過環境變量進行配置。為減少內存使用,可調整RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR為較小的值,默認為2.0,可將其調整為0.9或1.2等。具體可參考Ruby官方文檔。

  2. 多worker模式
    對於日志量級很大的場景,CPU通常會是Fluentd的性能瓶頸。此時可啟用多worker模式,通過多個worker進程並行處理日志事件。

<system>
  workers 8
</system>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM