logstash5.x改变
5.x版本 logstash中 elasticsearch插件的workers,無法配置大于1,會(huì)提示?This plugin uses the shared and doesn't need this option
這個(gè)的意思是進(jìn)到logstash本身的配置文件pipeline.output.workers。
不要一開始就修改workers個(gè)數(shù)。這也許是一個(gè)誤區(qū)。雖然確實(shí)可以起到一些作用。
檢查cpu
請注意CPU是否被大量使用。 在Linux / Unix上,運(yùn)行top -H以查看線程分解的進(jìn)程統(tǒng)計(jì)信息,以及總CPU統(tǒng)計(jì)信息。
如果CPU使用率很高,請?zhí)接嘘P(guān)檢查JVM堆的部分,然后閱讀有關(guān)調(diào)整Logstash工作線程設(shè)置的部分。
檢查內(nèi)存
請注意Logstash在Java VM上運(yùn)行的事實(shí)。 這意味著Logstash將始終使用您分配給它的最大內(nèi)存量。
查找使用大量內(nèi)存的其他應(yīng)用程序,并可能導(dǎo)致Logstash切換到磁盤。 如果應(yīng)用程序使用的總內(nèi)存超過物理內(nèi)存,則會(huì)發(fā)生這種情況。
檢查IO
監(jiān)視磁盤I / O以檢查磁盤飽和。
如果使用Logstash插件(例如文件輸出),可能會(huì)使存儲(chǔ)飽和,則可能會(huì)出現(xiàn)磁盤飽和。
磁盤飽和也可能發(fā)生,如果你遇到很多錯(cuò)誤,強(qiáng)制Logstash生成大的錯(cuò)誤日志。
在Linux上,可以使用iostat,dstat或類似于監(jiān)視磁盤I / O的東西。
監(jiān)視網(wǎng)絡(luò)I / O以實(shí)現(xiàn)網(wǎng)絡(luò)飽和。
如果使用執(zhí)行大量網(wǎng)絡(luò)操作的輸入/輸出,則可能發(fā)生網(wǎng)絡(luò)飽和。
在Linux上,可以使用諸如dstat或iftop之類的工具來監(jiān)視網(wǎng)絡(luò)。
通常情況下,如果堆大小太低,CPU利用率經(jīng)常過限制(百分之百),導(dǎo)致JVM不斷進(jìn)行垃圾回收。
檢查此問題的快速方法是將堆大小加倍,并查看性能是否提高。 不要增加超過物理內(nèi)存量的堆大小。 為操作系統(tǒng)和其他進(jìn)程保留至少1GB的空閑空間。
可以使用隨Java分發(fā)的jmap命令行實(shí)用程序或使用VisualVM對JVM堆進(jìn)行更準(zhǔn)確的度量。
調(diào)整Logstash工作線程設(shè)置:
首先使用-w標(biāo)志擴(kuò)大管道工作線程的數(shù)量。 這將增加可用于過濾器和輸出的線程數(shù)。 如果需要,可以安全地將其擴(kuò)展到多個(gè)CPU內(nèi)核,因?yàn)榫€程可以在I / O上變?yōu)榭臻e。
默認(rèn)情況下,每個(gè)輸出只能在單個(gè)管道工作線程中處于活動(dòng)狀態(tài)。 可以通過更改每個(gè)輸出的配置塊中的workers設(shè)置來增加此值。 不要使此值大于管道工人的數(shù)量。
還可以調(diào)整輸出批處理大小。 對于許多輸出,例如Elasticsearch輸出,此設(shè)置將對應(yīng)于I / O操作的大小。 在Elasticsearch輸出的情況下,此設(shè)置對應(yīng)于批處理大小。
pipeline.batch.size設(shè)置定義單個(gè)工作線程在嘗試執(zhí)行過濾器和輸出之前收集的最大事件數(shù)。 較大的批量大小通常更高效,但增加了內(nèi)存開銷。 某些硬件配置要求您通過設(shè)置LS_HEAP_SIZE變量來增加JVM堆大小,以避免使用此選項(xiàng)導(dǎo)致性能下降。 此參數(shù)的值超過最佳范圍會(huì)導(dǎo)致由于頻繁的垃圾回收或與內(nèi)存不足異常相關(guān)的JVM崩潰而導(dǎo)致性能下降。 輸出插件可以將每個(gè)批處理作為邏輯單元處理。 例如,Elasticsearch輸出針對接收的每個(gè)批生產(chǎn)批量請求。 調(diào)整pipeline.batch.size設(shè)置可調(diào)整發(fā)送到Elasticsearch的批量請求的大小。
pipeline.batch.delay設(shè)置很少需要調(diào)整。 此設(shè)置調(diào)整Logstash管道的延遲。 流水線批處理延遲是Logstash在當(dāng)前管道工作線程中接收到事件后等待新消息的最大時(shí)間(毫秒)。 在此時(shí)間過后,Logstash開始執(zhí)行過濾器和輸出.Logstash在接收事件和在過濾器中處理該事件之間等待的最大時(shí)間是pipeline.batch.delay和pipeline.batch.size設(shè)置的乘積。
如果計(jì)劃修改默認(rèn)管道設(shè)置,請考慮以下建議:
事件的總數(shù)由pipeline.workers和pipeline.batch.size設(shè)置的乘積確定。稱為流動(dòng)計(jì)數(shù)。 在調(diào)整pipeline.workers和pipeline.batch.size設(shè)置時(shí),請記住流動(dòng)計(jì)數(shù)的值。 以不規(guī)則間隔間歇接收大型事件的管道需要足夠的內(nèi)存來處理這些尖峰。 相應(yīng)地配置LS_HEAP_SIZE變量。
測量每個(gè)更改以確保其性能提高,而不是降低。
確保留下足夠的內(nèi)存可用來應(yīng)付突然增加的事件大小。 例如,生成表示為大文本塊的異常的應(yīng)用程序。
工作程序的數(shù)量可以設(shè)置為高于CPU核心的數(shù)量,因?yàn)檩敵鼋?jīng)常在I / O等待條件中花費(fèi)空閑時(shí)間。
Java中的線程具有名稱,可以使用jstack,top和VisualVM圖形工具來確定給定線程使用的資源。
在Linux平臺上,Logstash標(biāo)記了所有可以描述的線程。 例如,輸入顯示為[base] <inputname,過濾器/輸出工作者顯示為[base]> workerN,其中N是整數(shù)。 在可能的情況下,還會(huì)標(biāo)記其他線程以確定其目的。
?
轉(zhuǎn)載于:https://www.cnblogs.com/guochunyi/p/6148618.html
總結(jié)
以上是生活随笔為你收集整理的logstash5.x改变的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP 小数点保留两位【转】
- 下一篇: Go语言实现HashSet