elasticsearch 性能調(diào)優(yōu)(一)

所有的修改都可以在elasticsearch.yml里面修改惋嚎,也可以通過api來修改。推薦用api比較靈活

1.不同分片之間的數(shù)據(jù)同步是一個(gè)很大的花費(fèi)站刑,默認(rèn)是1s同步另伍,如果我們不要求實(shí)時(shí)性,我們可以執(zhí)行如下:

$ curl -XPUT 'http://localhost:9200/twitter/' -d '{

? ? "settings" : {

? ? ? ? "index" : {

? ? ? ? "refresh_interval":"60s"

? ? ? ? }

? ? }

}'

?此處我們是修改為60s 其實(shí)可以改為-1s ?這樣就是不刷新绞旅,我們需要在查詢的時(shí)候進(jìn)行一次索引刷新然后再查詢摆尝,這個(gè)嘛就得看你們用戶能容忍多少時(shí)間長度了。

2.選擇正確的存儲(chǔ)

一般來說因悲,如果運(yùn)行的是64位操作系統(tǒng)堕汞,你應(yīng)該選擇mmapfs。如果沒有運(yùn)行64位操作系統(tǒng)晃琳,為UNIX系統(tǒng)選擇niofs讯检,為Windows系統(tǒng)選擇simplefs。如果你可以容忍一個(gè)易失的存儲(chǔ)卫旱,但希望它非橙俗疲快,可以看看memory存儲(chǔ)顾翼,它會(huì)給你最好的索引訪問性能投放,但需要足夠的內(nèi)存來處理所有索引文件、索引和查詢适贸。

3.優(yōu)化es的線程池?

cache:這是無限制的線程池灸芳,為每個(gè)傳入的請(qǐng)求創(chuàng)建一個(gè)線程。

fixed:這是一個(gè)有著固定大小的線程池取逾,大小由size屬性指定耗绿,允許你指定一個(gè)隊(duì)列(使用queue_size屬性指定)用來保存請(qǐng)求,直到有一個(gè)空閑的線程來執(zhí)行請(qǐng)求砾隅。如果Elasticsearch無法把請(qǐng)求放到隊(duì)列中(隊(duì)列滿了),該請(qǐng)求將被拒絕债蜜。有很多線程池(可以使用type屬性指定要配置的線程類型)晴埂,然而究反,對(duì)于性能來說,最重要的是下面幾個(gè)儒洛。

index:此線程池用于索引和刪除操作精耐。它的類型默認(rèn)為fixed,size默認(rèn)為可用處理器的數(shù)量琅锻,隊(duì)列的size默認(rèn)為300卦停。

search:此線程池用于搜索和計(jì)數(shù)請(qǐng)求。它的類型默認(rèn)為fixed恼蓬,size默認(rèn)為可用處理器的數(shù)量乘以3惊完,隊(duì)列的size默認(rèn)為1000。

suggest:此線程池用于建議器請(qǐng)求处硬。它的類型默認(rèn)為fixed小槐,size默認(rèn)為可用處理器的數(shù)量,隊(duì)列的size默認(rèn)為1000荷辕。

get:此線程池用于實(shí)時(shí)的GET請(qǐng)求凿跳。它的類型默認(rèn)為fixed,size默認(rèn)為可用處理器的數(shù)量疮方,隊(duì)列的size默認(rèn)為1000控嗜。

bulk:你可以猜到,此線程池用于批量操作骡显。它的類型默認(rèn)為fixed躬审,size默認(rèn)為可用處理器的數(shù)量,隊(duì)列的size默認(rèn)為50蟆盐。

percolate:此線程池用于預(yù)匹配器操作承边。它的類型默認(rèn)為fixed,size默認(rèn)為可用處理器的數(shù)量石挂,隊(duì)列的size默認(rèn)為1000博助。

elasticsearch.yml中可以設(shè)置 :

threadpool.index.type: fixed

threadpool.index.size: 100

threadpool.index.queue_size: 500

curl -XPUT 'localhost:9200/_cluster/settings' -d '{

? ? "transient": {

? ? ? ? "threadpool.index.type": "fixed",

? ? ? ? "threadpool.index.size": 100,

? ? ? ? "threadpool.index.queue_size": 500

? ? }

}'

4.index過于龐大導(dǎo)致es經(jīng)常奔潰

? ? es最近老是掛掉,無緣無故痹愚,表現(xiàn)癥狀為 對(duì)于大小超過100g的index(5個(gè)分片 1e數(shù)據(jù)量左右)插入超級(jí)慢富岳,由于機(jī)器資源有限 ,只能想出 將每一天的數(shù)據(jù)建立一個(gè)index+“yyyy-MM-dd” 這樣可以有效緩解我們集群的壓力拯腮,有人會(huì)說如果改成這種方案那么之前寫的查詢豈不是廢了窖式,其實(shí)很easy,es支持index通配符 比如你之前是logment ?現(xiàn)在是logment2015-05-01和logment2015-05-02 ?現(xiàn)在只需要將查詢的代碼中index改為 logment* 就ok了 动壤,而且此法便于刪除過期的index 寫一個(gè)定時(shí)任務(wù)就ok了?

? ? 我們?nèi)罩镜募軜?gòu)是這樣的 logstash(client1) 采集日志到 redis ?然后通過?logstash(client2) 從redis轉(zhuǎn)至 elasticsearch 萝喘,logstash寫入elasticsearch的時(shí)候默認(rèn)就是按照每天來建立索引的 在其配置文件無需指明 index和type 即可。?

? ? 此處會(huì)產(chǎn)生一個(gè)問題,就是logstash 自動(dòng)建立索引的時(shí)候是根據(jù)格林尼治時(shí)間來建立的 正正比我們的時(shí)間 遲了8小時(shí)阁簸,我們需要在logstash的lib里面找到event.rb ?然后找到?org.joda.time.DateTimeZone.UTC 格林尼治時(shí)間 ?改成?org.joda.time.DateTimeZone.getDefault() (獲取本地時(shí)間類型 我這邊運(yùn)行就是中國/上海) 即可 ?話說logstash用的居然是大名鼎鼎的joda 果然是優(yōu)秀程序 爬早。

5. 采用G1垃圾回收機(jī)制代替默認(rèn)CMS

這里我不分析cms和g1的細(xì)節(jié)區(qū)別,大內(nèi)存(超過8g)下G1還是很給力的启妹,親測(cè)有效,用了G1 一周內(nèi)一次FULLGC 都沒有筛严,哈哈

? ? elasticsearch.in.sh 內(nèi) 將

# Force the JVM to use IPv4 stack

if?[?"x$ES_USE_IPV4"?!=?"x"?]; then

??JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"

fi


JAVA_OPTS="$JAVA_OPTS -XX:+UseParNewGC"

JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC"


JAVA_OPTS="$JAVA_OPTS -XX:CMSInitiatingOccupancyFraction=75"

JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSInitiatingOccupancyOnly"

 替換為

JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC"

JAVA_OPTS="$JAVA_OPTS -XX:MaxGCPauseMillis=200"

?? 順便說句JVM調(diào)優(yōu),調(diào)優(yōu)最主要目標(biāo):1.就是降低 GC 次數(shù)時(shí)間饶米;2.降低FULLGC 幾率

? ? ? PS:優(yōu)化代碼比優(yōu)化JVM實(shí)在多了

6. 清理掉沒用的緩存

??回憶之前的問題發(fā)現(xiàn)jvm調(diào)優(yōu)對(duì)于老年代的回收并沒有很顯著的效果桨啃,隨著時(shí)間的推移內(nèi)存還是不夠~后來才發(fā)現(xiàn)是es cache的問題

 其實(shí)集群建立時(shí)我們是可以調(diào)整每隔節(jié)點(diǎn)的緩存比例、類型檬输、者大小的

# 鎖定內(nèi)存照瘾,不讓JVM寫入swapping,避免降低ES的性能

bootstrap.mlockall: true

# 緩存類型設(shè)置為Soft Reference褪猛,只有當(dāng)內(nèi)存不夠時(shí)才會(huì)進(jìn)行回收

index.cache.field.max_size: 50000

index.cache.field.expire: 10m

index.cache.field.type: soft

??但是如果你不想重新配置節(jié)點(diǎn)并且重啟网杆,你可以做一個(gè)定時(shí)任務(wù)來定時(shí)清除cache

http://10.22.2.201:9200/*/_cache/clear? //清除所有索引的cache,如果對(duì)查詢有實(shí)時(shí)性要求伊滋,慎用碳却!

到了晚上資源空閑的時(shí)候我們還能合并優(yōu)化一下索引

http://10.22.2.201:9200/*/_optimize

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市笑旺,隨后出現(xiàn)的幾起案子昼浦,更是在濱河造成了極大的恐慌,老刑警劉巖筒主,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件关噪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡乌妙,警方通過查閱死者的電腦和手機(jī)使兔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來藤韵,“玉大人虐沥,你說我怎么就攤上這事≡笏遥” “怎么了欲险?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長匹涮。 經(jīng)常有香客問我天试,道長,這世上最難降的妖魔是什么然低? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任喜每,我火速辦了婚禮务唐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘灼卢。我一直安慰自己绍哎,他們只是感情好来农,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布鞋真。 她就那樣靜靜地躺著,像睡著了一般沃于。 火紅的嫁衣襯著肌膚如雪涩咖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天繁莹,我揣著相機(jī)與錄音檩互,去河邊找鬼。 笑死咨演,一個(gè)胖子當(dāng)著我的面吹牛闸昨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播薄风,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼饵较,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了遭赂?” 一聲冷哼從身側(cè)響起循诉,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎撇他,沒想到半個(gè)月后茄猫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡困肩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年划纽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锌畸。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡勇劣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蹋绽,到底是詐尸還是另有隱情芭毙,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布卸耘,位于F島的核電站退敦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蚣抗。R本人自食惡果不足惜侈百,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一瓮下、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钝域,春花似錦讽坏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至织咧,卻和暖如春胀葱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背笙蒙。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國打工抵屿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捅位。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓轧葛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親艇搀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子尿扯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容