精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

兩小時 Elasticsearch 性能優化,直接把慢查詢干團滅了……

運維 新聞
公共集群的機器負載分布不均衡的問題,業務的查詢和流量不可控等各種各樣的問題,要節省機器資源就一定會面對這種各種各樣的問題,除非土豪式做法,每個業務都擁有自己的機器資源,這里面有很多很多頗具技術挑戰的事情。

?問題:慢查詢

搜索平臺的公共集群,由于業務眾多,對業務的es查詢語法缺少約束,導致問題頻發。業務可能寫了一個巨大的查詢直接把集群打掛掉,但是我們平臺人力投入有限,也不可能一條條去審核業務的es查詢語法,只能通過后置的手段去保證整個集群的穩定性,通過slowlog分析等,下圖中cpu已經100%了。

圖片

?

昨天剛好手頭有一點點時間,就想著能不能針對這些情況,把影響最壞的業務抓出來,進行一些改善,于是昨天花了2小時分析了一下,找到了一些共性的問題,可以通過平臺來很好的改善這些情況。

首先通過slowlog抓到一些耗時比較長的查詢,例如下面這個索引的查詢耗時基本都在300ms以上:


{
"from": 0,
"size": 200,
"timeout": "60s",
"query": {
"bool": {
"must": \[
{
"match": {
"source": {
"query": "5",
"operator": "OR",
"prefix\_length": 0,
"fuzzy\_transpositions": true,
"lenient": false,
"zero\_terms\_query": "NONE",
"auto\_generate\_synonyms\_phrase\_query": "false",
"boost": 1
}
}
},
{
"terms": {
"type": \[
"21"
\],
"boost": 1
}
},
{
"match": {
"creator": {
"query": "0d754a8af3104e978c95eb955f6331be",
"operator": "OR",
"prefix\_length": 0,
"fuzzy\_transpositions": "true",
"lenient": false,
"zero\_terms\_query": "NONE",
"auto\_generate\_synonyms\_phrase\_query": "false",
"boost": 1
}
}
},
{
"terms": {
"status": \[
"0",
"3"
\],
"boost": 1
}
},
{
"match": {
"isDeleted": {
"query": "0",
"operator": "OR",
"prefix\_length": 0,
"fuzzy\_transpositions": "true",
"lenient": false,
"zero\_terms\_query": "NONE",
"auto\_generate\_synonyms\_phrase\_query": "false",
"boost": 1
}
}
}
\],
"adjust\_pure\_negative": true,
"boost": 1
}
},
"\_source": {
"includes": \[
\],
"excludes": \[\]
}
}

這個查詢比較簡單,翻譯一下就是:

SELECT guid FROM xxx WHERE source=5 AND type=21 AND creator='0d754a8af3104e978c95eb955f6331be' AND status in (0,3) AND isDeleted=0;

?慢查詢分析

這個查詢問題還挺多的,不過不是今天的重點。比如這里面不好的一點是還用了模糊查詢fuzzy_transpositions,也就是查詢ab的時候,ba也會被命中,其中的語法不是今天的重點,可以自行查詢,我估計這個是業務用了SDK自動生成的,里面很多都是默認值。

第一反應當然是用filter來代替match查詢,一來filter可以緩存,另外避免這種無意義的模糊匹配查詢,但是這個優化是有限的,并不是今天講解的關鍵點,先忽略。

1、錯用的數據類型

我們通過kibana的profile來進行分析,耗時到底在什么地方?es有一點就是開源社區很活躍,文檔齊全,配套的工具也非常的方便和齊全。

圖片

可以看到大部分的時間都花在了PointRangQuery里面去了,這個是什么查詢呢?為什么這么耗時呢?這里就涉及到一個es的知識點,那就是對于integer這種數字類型的處理。在es2.x的時代,所有的數字都是按keyword處理的,每個數字都會建一個倒排索引,這樣查詢雖然快了,但是一旦做范圍查詢的時候。比如 type>1 and type<5就需要轉成 type in (1,2,3,4,5)來進行,大大的增加了范圍查詢的難度和耗時。

之后es做了一個優化,在integer的時候設計了一種類似于b-tree的數據結構,加速范圍的查詢,詳細可以參考(https://elasticsearch.cn/article/446)

所以在這之后,所有的integer查詢都會被轉成范圍查詢,這就導致了上面看到的isDeleted的查詢的解釋。那么為什么范圍查詢在我們這個場景下,就這么慢呢?能不能優化。

明明我們這個場景是不需要走范圍查詢的,因為如果走倒排索引查詢就是O(1)的時間復雜度,將大大提升查詢效率。由于業務在創建索引的時候,isDeleted這種字段建成了Integer類型,導致最后走了范圍查詢,那么只需要我們將isDeleted類型改成keyword走term查詢,就能用上倒排索引了。

實際上這里還涉及到了es的一個查詢優化。類似于isDeleted這種字段,毫無區分度的倒排索引的時候,在查詢的時候,es是怎么優化的呢?

2、多個Term查詢的順序問題

實際上,如果有多個term查詢并列的時候,他的執行順序,既不是你查詢的時候,寫進去的順序。

圖片

?例如上面這個查詢,他既不是先執行source=5再執行type=21按照你代碼的順序執行過濾,也不是同時并發執行所有的過濾條件,然后再取交集。es很聰明,他會評估每個filter的條件的區分度,把高區分度的filter先執行,以此可以加速后面的filter循環速度。比如creator=0d754a8af3104e978c95eb955f6331be查出來之后10條記錄,他就會優先執行這一條。

怎么做到的呢?其實也很簡單,term建的時候,每一個term在寫入的時候都會記錄一個詞頻,也就是這個term在全部文檔里出現的次數,這樣我們就能判斷當前的這個term他的區分度高低了。

3、為什么PointRangeQuery在這個場景下非常慢

上面提到了這種查詢的數據結構類似于b-tree,他在做范圍查詢的時候,非常有優勢,Lucene將這顆B-tree的非葉子結點部分放在內存里,而葉子結點緊緊相鄰存放在磁盤上。當作range查詢的時候,內存里的B-tree可以幫助快速定位到滿足查詢條件的葉子結點塊在磁盤上的位置,之后對葉子結點塊的讀取幾乎都是順序的。

圖片

總結就是這種結構適合范圍查詢,且磁盤的讀取是順序讀取的。但是在我們這種場景之下,term查詢可就麻煩了,數值型字段的TermQuery被轉換為了PointRangeQuery。這個Query利用Block k-d tree進行范圍查找速度非常快,但是滿足查詢條件的docid集合在磁盤上并非向Postlings list那樣按照docid順序存放,也就無法實現postings list上借助跳表做蛙跳的操作。

要實現對docid集合的快速advance操作,只能將docid集合拿出來,做一些再處理。這個處理過程在org.apache.lucene.search.PointRangeQuery#createWeight這個方法里可以讀取到。這里就不貼冗長的代碼了,主要邏輯就是在創建scorer對象的時候,順帶先將滿足查詢條件的docid都選出來,然后構造成一個代表docid集合的bitset,這個過程和構造Query cache的過程非常類似。之后advance操作,就是在這個bitset上完成的。所有的耗時都在構建bitset上,因此可以看到耗時主要在build_scorer上了。

驗證

找到原因之后,就可以開始驗證了。將原來的integer類型全部改成keyword類型,如果業務真的有用到范圍查詢,應該會報錯。通過搜索平臺的平臺直接修改配置,修改完成之后,重建索引就生效了。

圖片

索引切換之后的效果也非常的明顯,通過kibana的profile分析可以看到,之前需要接近100ms的PointRangQuery現在走倒排索引,只需要0.5ms的時間。

圖片

之前這個索引的平均latency在100ms+,這個是es分片處理的耗時,從搜索行為開始,到搜索行為結束的打點,不包含網絡傳輸時間和連接建立時間,單純的分片內的函數的處理時間的平均值,正常情況在10ms左右。

圖片

經過調整之后的耗時降到了10ms內。

圖片

通過監控查看慢查詢的數量,立即減少到了0。

圖片

未來

后續將通過搜索平臺側的能力來保證業務的查詢,所有的integer我們會默認你記錄的是狀態值,不需要進行范圍查詢,默認將會修改為keyword類型,如果業務確實需要范圍查詢,則可以通過后臺再修改回integer類型,這樣可以保證在業務不了解es機制的情況下,也能擁有較好的性能,節省機器計算資源。

目前還遇到了很多問題需要優化。例如重建索引的時候,機器負載太高。公共集群的機器負載分布不均衡的問題,業務的查詢和流量不可控等各種各樣的問題,要節省機器資源就一定會面對這種各種各樣的問題,除非土豪式做法,每個業務都擁有自己的機器資源,這里面有很多很多頗具技術挑戰的事情。

實際上,在這一塊還是非常利于積累經驗,對于es的了解和成長也非常快,在查問題的過程中,對于搜索引擎的使用和了解會成長的非常快。不僅如此,很多時候,我們用心地看到生產的問題,持續的跟蹤,一定會有所收獲。大家遇到生產問題的時候,務必不要放過任何細節,這個就是你收獲的時候,比你寫100行的CRUD更有好處。

責任編輯:張燕妮 來源: 哈啰技術
相關推薦

2024-03-07 11:03:21

ElasticseaES索引

2015-10-26 11:53:36

OpenStackOpenStack部署RDO

2009-03-24 09:12:15

2009-07-28 09:18:17

2016-11-14 14:10:15

電信斷網寬帶網絡

2023-01-26 11:43:03

線程池CPUJava

2023-10-11 08:36:42

復合查詢腳本查詢

2017-11-01 16:15:23

SQL優化權限類型案例

2020-05-12 20:40:58

SQL慢查詢優化數據庫

2023-01-09 18:12:20

多線程故障組件

2014-12-19 16:08:18

2010-12-24 10:09:04

2009-03-09 09:27:16

Facebook社交網站健康

2009-05-08 08:59:47

微軟Windows 7操作系統

2011-10-25 15:49:57

VPN

2021-10-18 22:07:05

裝機顯卡硬件

2009-04-30 13:37:38

安全掛馬技術沙龍

2013-03-13 10:15:02

應用經濟調查數據智能機

2024-11-11 14:57:56

JWTSession微服務

2019-05-21 09:40:47

Elasticsear高性能 API
點贊
收藏

51CTO技術棧公眾號

97netav| 亚洲精品久久久久| 日韩国产精品毛片| 天天操天天射天天| 美女性感视频久久| 欧美激情精品久久久久久蜜臀| 欧美一级片黄色| 嫩草伊人久久精品少妇av杨幂| 亚洲美女屁股眼交3| 精品一区久久| 国产一区二区三区在线观看| 亚洲毛片在线| 欧美巨猛xxxx猛交黑人97人| 国产精品无码久久久久一区二区| 九九99久久精品在免费线bt| 色综合天天综合给合国产| 在线综合视频网站| 熟妇人妻一区二区三区四区 | 日本一区二区三级电影在线观看 | 色综合久久一区二区三区| 日韩精品一区二区三区中文精品| 538在线视频观看| av资源中文在线| 综合欧美亚洲日本| 日本精品一区二区三区高清 久久| www.色播.com| 卡一卡二国产精品 | 国产女人高潮的av毛片| 视频在线在亚洲| 国内伊人久久久久久网站视频| 亚洲综合第一区| 亚洲婷婷影院| 亚洲国产日韩欧美在线图片 | 中文字幕精品一区二| 在线观看的日韩av| 欧美精品情趣视频| 国产探花在线视频| 成人激情诱惑| 亚洲深夜福利网站| 37p粉嫩大胆色噜噜噜| jizz性欧美23| 欧美不卡视频一区| 日本人dh亚洲人ⅹxx| 国产精品高清一区二区| 欧美日韩精品专区| 中文字幕网av| 久久亚洲人体| 91超碰这里只有精品国产| 色哟哟精品视频| 日本另类视频| 欧美色大人视频| 日本三级黄色网址| 四虎国产精品免费久久| 欧美另类一区二区三区| 色www免费视频| 成人免费91| 日韩欧美激情在线| 少妇搡bbbb搡bbb搡打电话| 永久免费精品视频| 欧美精品一区二区久久久| 亚洲自拍偷拍精品| 亚洲综合小说图片| 这里只有视频精品| 午夜三级在线观看| 欧美日本一区二区视频在线观看| 欧美精品手机在线| 欧美亚洲天堂网| 亚洲欧美视频一区二区三区| 日本午夜在线亚洲.国产| 色老头一区二区| 久久66热re国产| 国产精品日韩高清| 免费一级在线观看| 国产精品久久久久久久久免费樱桃| 亚洲精品免费在线看| 91精品久久| 婷婷开心激情综合| 国产三级三级三级看三级| 成人做爰视频www| 日韩视频一区二区三区在线播放 | 亚洲视频免费看| www.av91| 欧美va在线观看| 91精品国产综合久久精品app| 在线看黄色的网站| 欧美精品系列| 欧美大片网站在线观看 | 久久久久久久欧美精品| 国产视频观看一区| 日日夜夜精品免费| 国产精品久久久久婷婷| av在线com| 日韩三区免费| 精品国产免费一区二区三区四区 | 国产精品久久久久77777| 一区二区三区免费在线| 成人白浆超碰人人人人| 欧美精品一区在线发布| 婷婷五月综合激情| 亚洲欧洲精品一区二区三区不卡| 日韩av三级在线| 中文幕av一区二区三区佐山爱| 亚洲国产精品va| 国产主播av在线| 美女久久一区| 国产欧美亚洲日本| 麻豆视频免费在线观看| 精品高清美女精品国产区| 污视频网址在线观看| 日韩成人一级| 欧美国产乱视频| 国产乱码久久久久| 国产日韩欧美麻豆| 欧美精品久久久久久久免费| 日韩午夜电影免费看| 精品视频偷偷看在线观看| 欧美成欧美va| 国内精品久久久久影院薰衣草 | 三级视频网站在线观看| 亚洲精品久久久| 国产精品成人aaaaa网站| 日本黄色免费视频| 一区二区欧美国产| 91精产国品一二三产区别沈先生| 狠狠做深爱婷婷综合一区| 97精品国产97久久久久久免费| 精品国产亚洲AV| 国产精品国产三级国产aⅴ中文| 东京热加勒比无码少妇| 欧美激情15p| 久久欧美在线电影| www.国产三级| 一区二区三区免费看视频| 国产成年人视频网站| 第九色区aⅴ天堂久久香| 欧美性做爰毛片| 无码国产色欲xxxx视频| 亚洲一区在线免费观看| 欧美色图校园春色| 在线看片不卡| 亚洲一区二区在线| a级网站在线播放| 欧美一区二区三区视频在线 | 午夜在线播放视频欧美| 精品国产一区二区三区四区精华 | 香蕉久久夜色精品| 精品在线观看一区二区| 日本在线啊啊| 日韩精品在线免费观看视频| 天天操夜夜操视频| 久久嫩草精品久久久精品| 黄色片久久久久| 国产在线日韩精品| 国产美女搞久久| 成人午夜在线影视| 欧美精品视频www在线观看| 久久久久人妻一区精品色| 久草在线在线精品观看| 一级黄色片播放| 欧美国产亚洲精品| 欧美国产在线电影| 亚洲欧洲视频在线观看| 日韩欧美在线字幕| 五月激情四射婷婷| 激情另类小说区图片区视频区| 五月天综合婷婷| 一区二区三区视频播放| 1769国产精品| 浮生影视网在线观看免费| 欧美日韩久久一区二区| 久操视频免费在线观看| 不卡的av在线| 亚洲免费av一区二区三区| 色呦哟—国产精品| 国产91aaa| 色就是色亚洲色图| 欧美xxx在线观看| 92国产精品视频| 在线中文字幕电影| 精品91自产拍在线观看一区| 五月天婷婷网站| 久久久久久久久岛国免费| 小泽玛利亚视频在线观看| 91tv官网精品成人亚洲| 亚洲国产第一页| 国产精品欧美风情| 五十路在线视频| 欧美视频精品在线| 妺妺窝人体色www聚色窝仙踪| 99综合电影在线视频| 中文字幕第80页| 亚洲五月婷婷| 亚洲一区二区三区乱码| 999国产精品一区| 国产精品99导航| 三级资源在线| 一区二区欧美亚洲| 免费观看的毛片| 欧美日韩精品免费| 久久久国产高清| 亚洲欧美日韩国产综合| 大又大又粗又硬又爽少妇毛片| 久久精品国产色蜜蜜麻豆| 日韩中字在线观看| 99精品视频在线观看免费播放| 国产精品一区二区欧美| 欧美网站免费| 日本精品久久久久影院| 色屁屁www国产馆在线观看| 亚洲欧美第一页| 日本xxxxwww| 91精选在线观看| 高清乱码免费看污| 午夜欧美一区二区三区在线播放 | 久久尤物电影视频在线观看| 99精品视频国产| 青青草伊人久久| av免费中文字幕| 日韩一级大片| 日本大片免费看| 91精品啪在线观看国产18| 欧洲精品国产| 亚洲品质自拍| 久久riav二区三区| 国产精品x8x8一区二区| 91成人理论电影| 亚洲高清国产拍精品26u| 国产精品极品在线| 国偷自产一区二区免费视频| 久久久免费在线观看| 色呦呦在线资源| 久久在线免费视频| 免费观看久久久久| 这里只有精品视频| jzzjzzjzz亚洲成熟少妇| 日韩精品在线看| 神马亚洲视频| 日韩电影免费在线观看中文字幕 | 99久热在线精品视频观看| 国产精品视频免费在线| 日韩一区二区三区免费视频| 欧美在线视频网站| 亚洲一区二区三区高清| 91欧美精品午夜性色福利在线 | 国产高清在线不卡| 五月天av在线| 亲爱的老师9免费观看全集电视剧| 亚洲精品一二三四五区| 亚洲天天影视网| 亚洲第一精品区| 久久精品欧美一区| 浴室偷拍美女洗澡456在线| 亚洲影视一区| 69精品丰满人妻无码视频a片| 国产一区二区三区自拍| 精品国产av无码一区二区三区| 韩日在线一区| 国产肥臀一区二区福利视频| 久久一区二区三区四区五区| 99视频在线免费| 精品夜夜嗨av一区二区三区| 欧美日韩理论片| 成人性生交大片免费看视频在线| 一级黄色片毛片| 久久综合久久久久88| x88av在线| 成人欧美一区二区三区黑人麻豆 | 亚洲精品女人久久久| 91视视频在线观看入口直接观看www | 欧美日韩经典丝袜| 91国内产香蕉| 全球最大av网站久久| 91亚洲va在线va天堂va国| 99精品中文字幕在线不卡| 欧美成人蜜桃| 五月天激情综合网| 青青草视频在线免费播放| 日韩成人伦理电影在线观看| 日韩在线观看免费全| 电影在线一区| 欧美久久精品午夜青青大伊人| 99久久精品免费看国产小宝寻花| 午夜先锋成人动漫在线| 国产精品网红福利| 影音先锋欧美激情| 欧洲久久久久久| 一个色综合网| 50路60路老熟妇啪啪| 久久99精品国产.久久久久久| 久久久久久久人妻无码中文字幕爆| 国产性做久久久久久| 欧美成人综合色| 欧美性videosxxxxx| 丁香花免费高清完整在线播放| 亚洲人成欧美中文字幕| 国精产品一区| 精品国偷自产在线| 日本网站在线免费观看视频| 久久久久久久国产| 涩涩涩久久久成人精品| 久久99精品久久久久久久久久 | 精品一二线国产| 女~淫辱の触手3d动漫| 成人欧美一区二区三区视频网页 | 欧美在线免费一级片| 男女曰b免费视频| 国产精品亚洲成人| 九九九视频在线观看| 亚洲国产日韩a在线播放性色| 小泽玛利亚一区二区三区视频| 亚洲成成品网站| 精品麻豆一区二区三区| 欧美亚洲成人精品| 亚洲电影一区| 在线看视频不卡| 日韩精品一二三区| 99免费观看视频| 国产精品国产三级国产a | 欧美色图一区二区三区| 亚洲卡一卡二卡三| 久热精品视频在线观看| 91精品xxx在线观看| 国内一区在线| 欧美日韩一区自拍 | 波多野结衣在线aⅴ中文字幕不卡| 日本爱爱小视频| 欧美午夜精品一区| 青青草在线视频免费观看| 欧美贵妇videos办公室| 深夜激情久久| 中文字幕一区二区三区精彩视频| 18成人免费观看视频| 国产香蕉精品视频| 亚洲美女淫视频| 精品人妻一区二区三区换脸明星 | 日本成人在线视频网站| 9.1成人看片免费版| 精品久久久国产| 丰满肉肉bbwwbbww| 欧美激情在线视频二区| 一区二区三区国产好| 国产成人永久免费视频| 国产精选一区二区三区| 国产成人免费观看网站| 在线观看视频一区二区| 日韩午夜影院| 国产91九色视频| 久久综合欧美| 自拍日韩亚洲一区在线| 91小视频在线观看| 日本熟妇毛茸茸丰满| 亚洲精品成人久久| 大桥未久在线视频| 久久久久久久久久久久久9999| 99av国产精品欲麻豆| 深田咏美中文字幕| 午夜av一区二区三区| 天天舔天天干天天操| 国产精品电影观看| 四季av一区二区三区免费观看| 色噜噜狠狠一区二区| 一区二区三区高清在线| 亚洲国产成人在线观看| 69**夜色精品国产69乱| 老司机aⅴ在线精品导航| aaa毛片在线观看| 国产香蕉久久精品综合网| 国产成人麻豆免费观看| 久久综合免费视频| av不卡一区| 热久久精品免费视频| 亚洲国产精华液网站w| 黄色av网站免费观看| 日韩视频一区在线| 日本成人精品| 欧美日韩在线不卡视频| 亚洲国产高清在线| 六月丁香色婷婷| 国产97在线|亚洲| 日韩综合在线| 日本在线不卡一区二区| 欧美性感美女h网站在线观看免费| 69xxxx欧美| 超碰97网站| 日韩高清不卡一区二区| 日本不卡一二区| 日韩欧美国产系列| 女厕盗摄一区二区三区| 五月天色一区| jlzzjlzz亚洲日本少妇| 国产免费一区二区三区四区五区| 久久影视电视剧免费网站清宫辞电视 | 96日本xxxxxⅹxxx17| 久久久天堂国产精品女人| 国产欧美日韩| 岛国精品一区二区三区| 欧美色综合影院| 国产h片在线观看| 亚洲国产精品久久久久婷婷老年 | 日韩成人av一区二区|