Logstash為什麼那麼慢? json序列化

2021-09-08 06:05:02 字數 1775 閱讀 4471

今天跟峽谷金橋聊天,詢問起logstash的效能,金橋提示說logstash中json的序列化是浪費效能的一方面。於是便有了下面的測試:

首先需要造乙份資料,資料可以通過logstash的generator來造。

input

}output

}

生成的資料格式如下:

...

測試的思路是,從test.log檔案中讀取資料。然後計算一定範圍內寫入的日誌數量(靠人工計算啦!)

codec => json的測試的指令碼如下:

input

}filter

}output

}

codec => plain的測試的指令碼如下:

input

}filter

}output

}

這裡在每條事件中寫入了1個時間戳字段,然後開啟檔案,定位隨機定位乙個開始的秒數,比如從2016-07-12 22:12:442016-07-12 22:12:54這十秒鐘,產生的日誌數量就是解析的數量。

為了避免機器差異以及執行環境的差異,所帶來的誤差,這裡每個codec執行了3次,計算得出的資料大致如下:

日誌名稱

起始時間(行數)

結束時間(行數)

總行數(結束-起始)

從測試的結果來看,的確plan要比json效能高一些,也就是說logstash在做json序列化的時候浪費了很多的效能。

這就給想要自己寫資料採集框架的朋友一點提示——event物件該如何設計?

ps:由於我選取的資料樣本範圍都是第乙個完整的10秒鐘,因此可以看到採集的資料量比較少,平均每秒還不到1w.

這可能受多方條件影響:

posted @

2016-07-12 23:13

xingoo 閱讀(

...)

編輯收藏

遞迴為什麼那麼慢?遞迴的改進演算法

不知道大家發現沒有,執行遞迴演算法,特別是遞迴執行層數多的時候,結果極其的慢,而且遞迴層數達到一定的值,還可能出現記憶體溢位的情況。本文就要將為你解釋原因和對應的解決方案。大家都知道遞迴的實現是通過呼叫函式本身,函式呼叫的時候,每次呼叫時要做位址儲存,引數傳遞等,這是通過乙個遞迴工作棧實現的。具體是...

為什麼那麼恨android

我不是果粉,但是,我很喜歡賈伯斯,是個喬粉 我是android開發者,從不動ios開發,目前為止 android的開發策略,導致碎片化日益的嚴重,給你舉一些例子 關於適配 同一套 在配置不高的huawei 8800 上執行流暢,但是在samsung s3上非常的卡頓,原因僅僅是乙個顯示api 你要呼...

Redis為什麼那麼快

前言redis是基於鍵值對的nosql資料庫,redis的value可以由string,hash,list,set,zset,bitmaps,hyperloglog等多種資料結構和演算法組成。redis還提供了鍵過期,發布訂閱,事務,lua指令碼,哨兵,cluster等功能。redis執行命令非常快...