国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ES寫入性能優(yōu)化

dailybird / 757人閱讀

摘要:大多數(shù)字段都是統(tǒng)計(jì)數(shù)據(jù),無法區(qū)分哪些發(fā)生了變化,所以不能增量更新。于是做了一些寫入優(yōu)化。之前寫業(yè)務(wù)代碼數(shù)據(jù)量一般不是很大,采用的是一次性把數(shù)據(jù)讀取到內(nèi)存中。用查看刷數(shù)據(jù)機(jī)器的性能可以看到開啟的個線程占用內(nèi)存。

背景: 有1億多的用戶畫像中數(shù)倉需要導(dǎo)入ES。大多數(shù)字段都是sql統(tǒng)計(jì)數(shù)據(jù),無法區(qū)分哪些發(fā)生了變化,所以不能增量更新。只能每天全量刷數(shù)據(jù)。在刷數(shù)據(jù)的過程中出現(xiàn)了更新緩慢、內(nèi)存問題。于是做了一些寫入優(yōu)化。

*

解決方案 1. 讀數(shù)據(jù)
首先要從數(shù)倉讀取出數(shù)據(jù)到內(nèi)存。然后再組裝對象去ES刷數(shù)據(jù)字段比較多而且都需要查詢。嘗試了一下,即使limit 10,也需要耗時2分鐘。所以第一步導(dǎo)數(shù)據(jù)不能直接查詢。采用的是數(shù)倉到分布式文件系統(tǒng)分片存儲。這一步已經(jīng)有現(xiàn)成工具。1億數(shù)據(jù)導(dǎo)入到分片耗時3分鐘左右
2.組裝數(shù)據(jù)
將分片的數(shù)據(jù)讀到j(luò)ava內(nèi)存中。再構(gòu)造請求參數(shù)刷ES

`問題:1.刷數(shù)據(jù)ES報(bào)413錯誤。ES建議每次bulk5~15M數(shù)據(jù),這里我每次批量提交5000條,bulk的時候發(fā)生的413 requets too large錯誤,google了一下,說是索引的時候段合并內(nèi)存不夠。于是調(diào)整indices.breaker.fielddata.limit為60%,增大堆內(nèi)存,結(jié)果沒什么用;也有說要調(diào)整 client_max_body_size 的,但是我們的es是云服務(wù),沒法改配置參數(shù)最終加大es的內(nèi)存為16G,不再報(bào)這個錯誤。

2.之前寫業(yè)務(wù)代碼數(shù)據(jù)量一般不是很大,采用的是一次性把數(shù)據(jù)讀取到內(nèi)存中。再做業(yè)務(wù)處理。但是這次在數(shù)據(jù)塞到一半的數(shù)據(jù),先是系統(tǒng)響應(yīng)變慢了,后來測試環(huán)境的系統(tǒng)掛了。通過過命令排查,發(fā)現(xiàn)List對象占用了很多空間。于是復(fù)查代碼。發(fā)現(xiàn)是for循環(huán)一直往list填對象導(dǎo)致的內(nèi)存泄露。于是限制了單個文件大小為20M,一個文件一個文件地處理。
`

3.提高es索引效率
剛開始刷數(shù)據(jù)預(yù)計(jì)需要20個小時。今天的數(shù)據(jù)如果明天才更新完,意義不大。于是想辦法提高索引效率。網(wǎng)上都說"refresh_interval": "-1";調(diào)整number_of_replicas=0。我調(diào)整了結(jié)果沒什么變化。于是采用多線程刷數(shù)據(jù)

問題:1.一開始使用size為20的無界隊(duì)列,導(dǎo)致耗盡資源,任務(wù)線程占用的內(nèi)存占用了80+%的內(nèi)存,其他任務(wù)可能被拖垮。后來線程的核心線程數(shù)和最大線程數(shù)統(tǒng)一設(shè)置為10。并采用future模式,一個任務(wù)完成后再去添加其他任務(wù)。解決了線程耗盡資源和內(nèi)存的問題。

用htop查看刷數(shù)據(jù)機(jī)器的性能

可以看到開啟的10個線程占用42%內(nèi)存。主線程cpu偶爾接近100%,這不是io密集型嗎?怎么會耗cpu。cpu變高可能是復(fù)雜的技術(shù)或者死循環(huán)。這里循環(huán)每次讀取量有50000條,并且組裝對象的邏輯。而且有10個線程,猜想可能是這個原因。

ES的索引速率

成果
最后原來需要20小時才能完成的刷數(shù)據(jù)任務(wù),只耗時約100分鐘。當(dāng)然中間遇到的坑不止這些

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/73457.html

相關(guān)文章

  • ES分布式架構(gòu)及底層原理

    摘要:分布式架構(gòu)原理設(shè)計(jì)的理念就是分布式搜索引擎,底層實(shí)現(xiàn)還是基于的,核心思想是在多態(tài)機(jī)器上啟動多個進(jìn)程實(shí)例,組成一個集群。 es分布式架構(gòu)原理 elasticsearch設(shè)計(jì)的理念就是分布式搜索引擎,底層實(shí)現(xiàn)還是基于Lucene的,核心思想是在多態(tài)機(jī)器上啟動多個es進(jìn)程實(shí)例,組成一個es集群。一下是es的幾個概念: 接近實(shí)時es是一個接近實(shí)時的搜索平臺,這就意味著,從索引一個文檔直到文檔...

    Ocean 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<