ES查詢新老數(shù)據(jù)速率差的問題探析

問題背景

在用戶的實(shí)際使用中發(fā)現(xiàn)叼屠,某一簡單查詢,查詢一段時(shí)間內(nèi)符合要求的記錄论颅,查詢老舊數(shù)據(jù)哎垦,響應(yīng)速度在1秒左右,而查詢包含最近數(shù)據(jù)的同類查詢則慢到十秒左右恃疯,且存在超時(shí)的現(xiàn)象漏设。老舊數(shù)據(jù)比如說今年5月份之前的數(shù)據(jù),新數(shù)據(jù)比如說今年6月份的數(shù)據(jù)今妄,對(duì)比的查詢僅僅只有時(shí)間段的差異郑口,沒有排序,也沒有模糊匹配盾鳞。

另外犬性,在出現(xiàn)慢查詢時(shí),CPU利用率幾乎飆升到100%腾仅。

問題分析

是分片的存儲(chǔ)傾斜導(dǎo)致的嗎乒裆?

用戶的數(shù)據(jù)量有幾十TB,幾百億條數(shù)據(jù)推励。首先是懷疑分片分配或者存儲(chǔ)不均勻的問題導(dǎo)致鹤耍,而現(xiàn)場的實(shí)際是該索引一共設(shè)置了1000分片,此后未再設(shè)計(jì)按月份存儲(chǔ)拆分索引這種操作吹艇,也就是所謂5月份或者6月份的記錄數(shù)據(jù)都是疊放在相同的索引分片中惰蜜,均勻分散在1000個(gè)分片里,新老數(shù)據(jù)不存在分布的區(qū)別受神,這邊從兩份查詢結(jié)果命中的分片數(shù)相等也可見一斑抛猖。

是新數(shù)據(jù)段尚未合并導(dǎo)致的嗎?

新的索引數(shù)據(jù)寫入時(shí), ES會(huì)創(chuàng)建新的段财著,通過后臺(tái)的實(shí)際檢測發(fā)現(xiàn)联四,隨機(jī)抽取了一個(gè)分片目錄,里面共有200+的文件數(shù)撑教,其中數(shù)據(jù)段的數(shù)量在80+朝墩,屬于較多的情況。因此首先考慮執(zhí)行一下段合并伟姐。

通過Kibana執(zhí)行POST強(qiáng)制合并的請求時(shí)收苏,往往會(huì)報(bào)請求超時(shí)的錯(cuò)誤,這時(shí)無需去調(diào)大超時(shí)時(shí)間愤兵。因?yàn)檫@個(gè)調(diào)用將阻塞直到合并完成鹿霸。如果http連接丟失,請求將在后臺(tái)繼續(xù)進(jìn)行秆乳,任何新的請求將被阻止懦鼠,直到之前的強(qiáng)制合并完成。

等到觀察到合并執(zhí)行結(jié)束后屹堰,再去嘗試比較查詢速度肛冶,絕對(duì)速度略有提升,但相對(duì)速度仍然有數(shù)倍的差異扯键。方向?qū)α四佬洌蝗珜?duì),問題的根因不在于此忧陪。

查詢緩存的影響扣泊?

如此巨大的速度差異,可能是ES查詢緩存引起的嘶摊。

進(jìn)行了一些簡單的查詢順序調(diào)換,得到的結(jié)果仍然是查詢最新的數(shù)據(jù)較慢评矩。同時(shí)也發(fā)現(xiàn)叶堆,對(duì)慢查詢直接進(jìn)行第二次查詢的時(shí)候,速度確實(shí)特別快斥杜,從十秒到低于1秒虱颗,這應(yīng)該是直接使用緩存的效果了。

那么也不是由于緩存引發(fā)的蔗喂。但這里沒有拿到一手完整的數(shù)據(jù)忘渔,存疑。

分析總結(jié)

這種現(xiàn)象的原因可能是:

  1. Segments(段):ES將索引劃分為多個(gè)段缰儿,每個(gè)段包含部分文檔畦粮。當(dāng)新文檔被添加到索引中時(shí),ES會(huì)創(chuàng)建新的段。老數(shù)據(jù)存在于舊的段中宣赔,而新數(shù)據(jù)存在于新的段中预麸。查詢舊數(shù)據(jù)比查詢新數(shù)據(jù)快是因?yàn)榕f的段被更頻繁地訪問和緩存,而新的段可能還沒有被完全加載或緩存儒将,導(dǎo)致查詢速度較慢吏祸。
  2. Merge(合并)操作:ES的合并操作會(huì)將多個(gè)段合并為一個(gè)更大的段,以優(yōu)化查詢性能钩蚊。當(dāng)有新文檔被索引時(shí)贡翘,ES需要執(zhí)行合并操作來壓縮段數(shù)量。這個(gè)合并操作可能會(huì)導(dǎo)致查詢新數(shù)據(jù)較慢砰逻,因?yàn)樵诤喜⑦^程中床估,舊的段可能會(huì)被頻繁地訪問和緩存,而新的段可能需要等待合并完成才能被加載和緩存诱渤。
  3. Refresh(刷新)操作:ES默認(rèn)每秒執(zhí)行一次刷新操作丐巫,將內(nèi)存中的數(shù)據(jù)寫入磁盤。當(dāng)有新文檔被索引時(shí)勺美,ES需要等待下一次刷新操作才能將新數(shù)據(jù)寫入磁盤并更新索引递胧。因此,在刷新操作之前查詢新數(shù)據(jù)可能會(huì)較慢赡茸,而查詢舊數(shù)據(jù)不會(huì)受到影響缎脾。

為解決以上問題,可以采取以下措施:

  1. 提高刷新頻率:可以通過調(diào)整刷新間隔來減少新數(shù)據(jù)查詢的延遲占卧,但會(huì)增加寫入操作的開銷遗菠。
  2. 使用更少的段:可以通過手動(dòng)觸發(fā)合并操作來減少索引中的段數(shù)量,從而提高查詢性能华蜒。
  3. 預(yù)熱(warm-up):可以在索引啟動(dòng)前對(duì)新數(shù)據(jù)執(zhí)行一些查詢操作辙纬,以提前加載和緩存新數(shù)據(jù)所在的段,從而加速后續(xù)查詢叭喜。
  4. 設(shè)置查詢優(yōu)先級(jí):可以通過設(shè)置查詢優(yōu)先級(jí)贺拣,給新數(shù)據(jù)的查詢分配更多的資源和處理能力,以提高查詢速度捂蕴。

總結(jié)來說譬涡,ES查詢老數(shù)據(jù)較快、查詢新數(shù)據(jù)較慢是由于ES的索引段劃分啥辨、合并操作涡匀、刷新操作等機(jī)制導(dǎo)致的,通過調(diào)整刷新頻率溉知、優(yōu)化段合并陨瘩、預(yù)熱和設(shè)置查詢優(yōu)先級(jí)等方法可以改善新數(shù)據(jù)查詢的性能腕够。

解決方案

現(xiàn)場的讀寫參數(shù)等不便進(jìn)行調(diào)整,因此我從優(yōu)化查詢語句入手拾酝,發(fā)現(xiàn)業(yè)務(wù)的查詢只涉及3個(gè)字段燕少,分別是2個(gè)term和一個(gè)range查詢,這種查詢是無需進(jìn)行評(píng)分的蒿囤。因此推薦將query語句的must查詢改為了filter查詢客们,查詢慢的問題迎刃而解,所有時(shí)間段的查詢都得以秒回材诽。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末底挫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子脸侥,更是在濱河造成了極大的恐慌建邓,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睁枕,死亡現(xiàn)場離奇詭異官边,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)外遇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門注簿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人跳仿,你說我怎么就攤上這事诡渴。” “怎么了菲语?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵妄辩,是天一觀的道長。 經(jīng)常有香客問我山上,道長眼耀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任胶哲,我火速辦了婚禮畔塔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鸯屿。我一直安慰自己,他們只是感情好把敢,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布寄摆。 她就那樣靜靜地躺著,像睡著了一般修赞。 火紅的嫁衣襯著肌膚如雪婶恼。 梳的紋絲不亂的頭發(fā)上桑阶,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音勾邦,去河邊找鬼蚣录。 笑死,一個(gè)胖子當(dāng)著我的面吹牛眷篇,可吹牛的內(nèi)容都是我干的萎河。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蕉饼,長吁一口氣:“原來是場噩夢啊……” “哼虐杯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起昧港,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤擎椰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后创肥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體达舒,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年叹侄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了巩搏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡圈膏,死狀恐怖塔猾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情稽坤,我是刑警寧澤丈甸,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站尿褪,受9級(jí)特大地震影響睦擂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜杖玲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一顿仇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧摆马,春花似錦臼闻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蕉毯,卻和暖如春乓搬,著一層夾襖步出監(jiān)牢的瞬間思犁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國打工进肯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留激蹲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓江掩,卻偏偏與公主長得像学辱,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子频敛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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