至此,我們可以看到,在寫入的過程中,ES的性能主要merge、flush、reflush,還有translog的flush的階段被消耗。了解到這個過程,我們就可以參照ES的官方文檔,去對相應(yīng)的各個階段進(jìn)行調(diào)優(yōu)。當(dāng)然首先要知道企業(yè)的性能狀態(tài),如果IO有問題就調(diào)merge,如果CPU的問題可以考慮在reflush方面做調(diào)整。
然后就是調(diào)優(yōu)的方向,merge官方默認(rèn)參數(shù)是按照SSD的磁盤來做的調(diào)優(yōu),實(shí)際它是不太適合機(jī)械磁盤這種服務(wù)的。因此,我建議如果涉及到IO問題,可以考慮把merge的進(jìn)程數(shù)調(diào)低。在數(shù)據(jù)寫入特別大時,采取網(wǎng)絡(luò)限流。在內(nèi)核層面,ES配置文件里含有了一些系統(tǒng)提供的很好的參數(shù)。
◆Rsyslog的調(diào)優(yōu)

如圖所示,這是Rsyslog一個內(nèi)部隊(duì)列,Rsyslog的內(nèi)部也是比較復(fù)雜的。首先是input的這個進(jìn)程,接著是預(yù)處理的階段,比如它會進(jìn)行一些分類,把你的某一個日志tag按照一個什么分類寫到一個什么地方。再往后就是filter Engine,在這之前會有一個Queue,就是說這個數(shù)據(jù)在內(nèi)部會維護(hù)一個隊(duì)列,然后Filter到這個隊(duì)列里主動拉取數(shù)據(jù)。后面是Action processor,它在前面也有每一個事件的隊(duì)列,Action的進(jìn)程會從相應(yīng)的隊(duì)列當(dāng)中寫數(shù)據(jù)。這就是的內(nèi)部的結(jié)構(gòu)。
Rsyslog主要有Main queue和Action queue兩種類型的隊(duì)列,四種隊(duì)列設(shè)置,分別是:Direct queue、Disk queue、In-memory queue(LinkedList、FixdArray)、Disk-assisted memory queue。

總結(jié)
日志量就是成本,所以不要以花了多少錢而自豪,而是要以做了多少事作為目標(biāo)。要傳輸有價值的數(shù)據(jù)!要多注意業(yè)務(wù)優(yōu)化。此外,一定要記住:選擇哪一種架構(gòu)由具體的場景決定,不要過度設(shè)計(jì),但要盡量快速迭代。
【講師簡介】

于炳哲,現(xiàn)就職于新浪微博-手機(jī)微博移動服務(wù)保障部,任系統(tǒng)開發(fā)工程師,負(fù)責(zé)手機(jī)微博服務(wù)端和客戶端的日志收集、傳輸?shù)裙ぷ?,以及目前新浪網(wǎng)&新浪微博最大的Elasticsearch集群的維護(hù)與相關(guān)中間件的開發(fā)維護(hù)工作。主要專注于日志相關(guān)技術(shù),關(guān)注日志處理,傳輸,存儲;等相關(guān)領(lǐng)域,對大規(guī)模數(shù)據(jù)量下的日志治理有一定的經(jīng)驗(yàn)。曾就職于北京問日科技(365日歷)從事Java服務(wù)端開發(fā)和日志處理,運(yùn)維監(jiān)控報警等相關(guān)工作。
本文由于炳哲于2016年8月,在WOT2016移動互聯(lián)網(wǎng)技術(shù)峰會運(yùn)維與安全專場《日志漫談-不同規(guī)模下的日志運(yùn)維與優(yōu)化》主題演講整理而成。WOT2016大數(shù)據(jù)峰會將 于2016年11月25-26日在北京粵財(cái)JW萬豪酒店召開,屆時,數(shù)十位大數(shù)據(jù)領(lǐng)域一線專家、數(shù)據(jù)技術(shù)先行者將齊聚現(xiàn)場,在圍繞機(jī)器學(xué)習(xí)、實(shí)時計(jì)算、系統(tǒng)架構(gòu)、NoSQL技術(shù)實(shí)踐等前沿技術(shù)話題展開深度交流和溝通探討的同時,分享大數(shù)據(jù)領(lǐng)域最新實(shí)踐和最熱門的行業(yè)應(yīng)用。了解WOT2016大數(shù)據(jù)技術(shù)峰會更多信息,請登陸大會官網(wǎng):http://wot.51cto.com/2016bigdata/
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請注明原文作者和出處為51CTO.com】