今天跟峽谷金橋
聊天,詢問起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:44
到2016-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執行命令非常快...