国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

提升 Elasticsearch 性能的關鍵優化技巧,50ms提升到1ms?。?!

開發 架構
在 Trendyol(阿里巴巴旗下土耳其電商平臺),我們始終關注賣家和買家,努力使國際銷售盡可能順暢高效。我的團隊在這個過程中發揮著關鍵作用,使賣家只需點擊一下就能接觸到國際買家。

在微服務架構中,速度和效率至關重要,每一毫秒都可能產生巨大影響。最近,我們在一個使用 Elasticsearch 來查找商品列表的微服務上深有體會。起初,每個 Elasticsearch 查詢 大約需要 50-60 毫秒才能完成——在某些情況下還算可以,但在處理大量請求和頻繁更新時,這就成了瓶頸。即使是微小的延遲也會影響系統性能和用戶滿意度。

認識到需要改進后,我們開始進行重大更改。我們的目標是減少延遲,同時確保服務能夠高效地處理大量請求。經過一系列調整和優化 Elasticsearch 查詢 后,我們將延遲降低到 1 毫秒以下。這一重大改進不僅使服務速度大幅提升,還增強了其處理大量請求的能力。

在本文中,我們將逐步介紹實現這一性能提升的步驟。我們將涵蓋從調整查詢到架構更新的具體更改和策略。

1、背景介紹

在 Trendyol(阿里巴巴旗下土耳其電商平臺),我們始終關注賣家和買家,努力使國際銷售盡可能順暢高效。我的團隊在這個過程中發揮著關鍵作用,使賣家只需點擊一下就能接觸到國際買家。這意味著賣家無需手動更新新市場的價格或庫存水平。他們可以輕松地向全球客戶銷售商品,以最小的努力開拓新的機會。

這一操作的核心是一個 微服務,負責更新國際銷售的產品價格。系統中的每個商品列表都屬于一個“內容(content)”。當產品在其他國家銷售時,必須考慮多個因素來設定正確的價格,例如賣家的貨幣和運費。一個詳細的算法會計算出一個“系數率(coefficient rate)”,該系數率與價格相乘以計算新價格,針對每個內容與相應的“店面(storefront)”(即國家),然后將此信息發送到一個 Kafka 主題。

圖片圖片

我們的微服務監聽該 Kafka 主題 上的更新,處理傳入的數據,并使用 Elasticsearch 查找相關的商品列表。為此,我們創建了一個 Elasticsearch 查詢 來找到需要根據新系數調整的相關商品列表。找到這些列表后,服務將包含系數率的修訂列表發布到另一個 Kafka 主題,在那里進一步處理以設置新價格。

如果該系統出現任何延遲,價格更新可能無法立即應用。這意味著價格調整可能需要更長時間才能反映出來,可能會影響一致性。因此,系統中的每一毫秒都很重要。

2、性能測試方法

在深入探討性能調優細節之前,了解我們如何測試和評估微服務和 Elasticsearch 查詢 的性能非常重要。為了測試,我們使用了公司內部開發和維護的工具 Ares。Ares 使我們能夠對應用程序進行全面的負載測試,包括 Elasticsearch 查詢 和整體系統性能。

銘毅備注:關于性能測試工具,咱們可以使用 Elasticsearch 平替的開源方案 esrally,或者我們通用的方案:JMeter 等。

JMeter 如何實現 Elasticsearch 8.X 性能測試?

首先,我們從生產環境中選擇大量樣本。通常,我們會檢索一份包含 10,000 個內容的列表,代表我們需要測試的數據。然后,我們在測試工具中創建一個 Elasticsearch 任務,使用這個內容列表。此設置有助于我們模擬真實世界的條件,并有效地對 Elasticsearch 索引施加壓力。

以下是我們用于測試的查詢示例:

{
    "query": {
        "bool": {
            "filter": [
                {
                    "term": {
                        "contentId": 10863010
                    }
                },
                {
                    "terms": {
                        "storefrontId": [
                            "50",
                            "35",
                            "36",
                            "43",
                            "48",
                            "49"
                        ]
                    }
                }
            ]
        }
    },
    "_source": [
        "storefrontId",
        "listingId"
    ],
    "sort": [
        {
            "storefrontId": "asc",
            "listingId": "asc"
        }
    ]
}

該查詢基于特定的 contentId 和一組 storefrontId 檢索文檔。它使用 bool 查詢 和 filter 子句 來選擇匹配給定內容 ID 的文檔。此外,它過濾 storefrontId 以確保結果與目標市場相關。

3、性能優化策略

3.1. 減少分片數量

在 Elasticsearch 中,分片是存儲的基本單位,將索引拆分為更小的部分,使系統能夠在多個節點上分配數據和查詢。我們在 Elasticsearch 集群中進行的第一個優化是減少過多的分片數量。

最初,我們的集群有超過 100 個分片,導致系統資源的低效使用。

為了解決這個問題,我們將分片數量減少到與節點數量相匹配,這不僅降低了資源開銷,還顯著提高了查詢速度和集群穩定性。

以下是減少分片數量后集群的分片分布情況:

圖片圖片

3.2. 限制段數量

我們的第二個優化是解決隨著索引操作而增加的段(segment)數量。

段是分片內更小的不可變數據單元,隨著段的累積,搜索延遲會增加,因為 Elasticsearch 需要搜索更多的段。

為了解決這個問題,我們實施了一個段合并策略來控制并逐步減少段的數量,優化搜索性能。

起初,我們嘗試在段數量增加時強制段合并,但這種方法不足以限制段數量。為了解決這個問題,我們實施了一個段合并策略來控制并逐步減少段的數量,優化搜索性能。以下是我們應用的策略字段:

  • max_merge_at_once_explicit: "4":控制顯式合并操作中一次可以合并的最大段數,限制為 4 可以防止在手動合并期間過度使用資源。
  • max_merge_at_once: "4":限制自動合并時一次可以合并的段數,保持在 4 以確保受控的合并,維持系統穩定性。
  • max_merged_segment: "30gb":定義合并段的最大大小,限制為 30GB 可以避免創建過大的段,導致內存和性能問題。
  • segments_per_tier: "2":限制每個合并層允許的段數,限制為 2 有助于保持較低的段數量,通過優化 Elasticsearch 必須搜索的段數來降低搜索延遲。
  • floor_segment: "20gb":設置有資格合并的最小段大小,小于 20GB 的段將首先被合并,防止大量小段的累積,可能會降低搜索性能。

圖片圖片

3.3. 類型轉換優化

我們實施的下一個優化是將用于 term 查詢 的字段類型更改為 keyword。

keyword 存儲在倒排索引中,使查找速度極快,非常適合 term 或精確匹配查詢。

鑒于我們只需要這些字段進行精確匹配,我們決定將其轉換為 keyword 類型,并重新索引了所有文檔。

在轉換字段類型后,我們重新索引了所有文檔,并再次進行了負載測試。

結果令人印象深刻:搜索速率飆升至每秒約 50,000 個查詢,而延遲降至 1 毫秒以下。

類型轉換前的集群性能:

圖片圖片

類型轉換后的集群性能:

圖片圖片

這一優化不僅提升了查詢性能,還展示了在 Elasticsearch 中為特定查詢用例選擇正確字段類型的重要性。

3.4. 啟用請求緩存

我們實施的另一個性能改進是啟用 Elasticsearch 集群中的 request_cache。此緩存對于處理重復查詢非常有用,例如重試或從 Kafka 多次攝取同一事件的情況。通過在索引上啟用請求緩存,我們確保了這些重復查詢的響應時間更快。

Elasticsearch 的緩存特別有效之處在于,每當刷新間隔觸發時,它會自動失效緩存數據,這意味著緩存的數據始終接近實時,避免了一致性問題。

盡管這可以顯著提高查詢速度,但需要考慮它可能導致的內存使用增加。因此,啟用 request_cache 是一個強大的優化,但應與內存考慮保持平衡。

要在 Elasticsearch 中為索引啟用請求緩存,可以使用以下命令:

PUT /your_index_name/_settings
{
  "index": {
    "requests.cache.enable": true
  }
}

3.5. 優化排序

在 Elasticsearch 中查詢超過 10,000 個文檔時,我們使用了 Point In Time (PIT)。

干貨 | 全方位深度解讀 Elasticsearch 分頁查詢

PIT 允許我們通過捕獲索引在特定時刻的快照來執行一致的搜索,確保查詢不受正在進行的索引操作影響。所有的 PIT 搜索請求都會自動包含一個隱式的排序斷點字段 _shard_doc,有助于保持一致的分頁。如果無法使用 PIT,確保在排序子句中包含一個唯一的斷點字段至關重要,以防止分頁結果中出現遺漏或重復。

在我們的案例中,原始查詢按 listingId 和 storefrontId 對結果進行排序。然而,由于我們主要關注的是避免重復,而不是使用特定的排序字段,我們從查詢中刪除了這些排序字段。

取而代之的是,我們按照建議使用 _shard_doc 對結果進行排序。

搜索響應中,每個命中都會包含一個排序值數組。使用 PIT 時,每個命中的最后一個排序值包含斷點 _shard_doc。該值在 PIT 的上下文中對每個文檔都是唯一的,由分片索引和 Lucene 的內部文檔 ID 組合而成。這種方法確保我們高效地管理文檔分頁,而不會引入重復。

4、總結

通過針對性的優化,我們將 Elasticsearch 查詢 的延遲從 50-60 毫秒降低到 1 毫秒以下,顯著提升了系統性能。

這些優化包括降低分片數量、有效管理 段合并、啟用 請求緩存 和為精確查詢優化 字段類型。

這些經驗表明,在 Elasticsearch 中進行針對性的優化可以帶來速度和整體系統響應能力的顯著提升。

原文地址:https://medium.com/trendyol-tech/unlocking-speed-key-optimizations-for-elasticsearch-performance-20af2cb4ac87

原文作者:Mert Oz

責任編輯:武曉燕 來源: 銘毅天下Elasticsearch
相關推薦

2024-05-16 11:51:44

前端性能優化JavaScript

2023-09-26 12:02:34

C++循環

2025-03-10 00:00:50

2023-08-08 08:36:52

Vue.js代碼Pinia

2020-12-09 22:15:40

物聯網IOT客戶關系

2016-07-19 09:35:34

云計算

2023-07-21 12:51:32

2023-04-11 16:28:31

人工智能AI

2022-10-18 14:22:27

2023-12-14 12:56:00

MongoDB數據庫優化

2021-05-28 11:02:11

VR

2025-11-03 01:53:00

2025-09-30 01:33:00

2018-02-23 11:34:31

蘋果App開發者

2011-05-17 10:53:41

鏈路

2023-11-27 15:41:16

物聯網數字孿生

2024-04-12 08:28:38

優化查詢語句PostgreSQL索引

2024-11-15 10:45:56

2024-03-19 13:52:05

NVIDIAQuantum全新網絡交換機
點贊
收藏

51CTO技術棧公眾號

亚洲欧美另类人妖| 欧美日韩国产小视频在线观看| 91精品国产91久久久久| 色网站免费在线观看| 不卡的av网站| 欧美精品与人动性物交免费看| 自拍偷拍亚洲区| 超碰在线电影| 成人一级视频在线观看| 国产精品中出一区二区三区| 欧美美女在线直播| 亚洲黄色www| www.成人.com| 亚洲午夜在线视频| 青青草精品视频在线观看| 国内精品久久久久影院色| 成人激情直播| 水蜜桃精品av一区二区| 久久久久久97| 一级欧美视频| 亚洲人成亚洲人成在线观看| a级影片在线观看| 在线影院国内精品| 欧美hdfree性xxxx| 一区二区三区鲁丝不卡| 欧洲成人在线视频| 国产极品一区| 亚洲精品中文字幕女同| 青春草视频在线观看| 欧美喷水一区二区| 九色在线免费| 91高清视频免费看| 精华区一区二区三区| 亚洲高清视频在线| av免费播放| 中文字幕一区av| 日本久久久久久久久久久久| 91热门视频在线观看| 亚洲精品久久久久久久蜜桃臀| 精品写真视频在线观看| 一个色的综合| 另类小说视频一区二区| 亚洲欧美国产一区二区| 久久成人精品无人区| 天天操天天干天天玩| 国产精品一区二区视频| av无码久久久久久不卡网站| av午夜一区麻豆| 久久久久久久片| 亚洲视频一区二区免费在线观看| 成人黄色影视| 国产精品久久久久久久蜜臀| **孕交吃奶水一级毛片| 亚洲国产成人高清精品| 久久电影视频| 精品国产3级a| 精品视频在线一区二区在线| 日韩在线视频中文字幕| h视频久久久| 91精品国产精品| 精品视频亚洲| 国产九色91| 久久国产乱子精品免费女| 中文字幕无码精品亚洲资源网久久| 91免费看`日韩一区二区| 免费白浆视频| 欧美日本一道本在线视频| 国产网站在线| 九色精品美女在线| 日韩电影二区| 日韩精品资源| 2欧美一区二区三区在线观看视频| 美女黄色片视频| 午夜精品一区二区三区电影天堂 | 日韩国产欧美| 亚洲最大av网站| 成人勉费视频| 欧美精品在线视频观看| 少妇高潮一区二区三区| 成人欧美一区二区三区视频xxx| 日韩va欧美va亚洲va久久| 久久野战av| 久久久在线免费观看| 99久久99热这里只有精品| 看高清中日韩色视频| 成人高清免费观看| 高清免费观看在线| 日韩美女在线视频| 第四色中文综合网| 精品一区二区电影| 亚洲综合影院| 久久久精品国产一区二区三区| 国产精品综合久久| 濑亚美莉vs黑人在线观看| 婷婷夜色潮精品综合在线| 国内在线免费视频| 欧美劲爆第一页| 欧美一级视频| a√免费观看在线网址www| 日韩视频一区二区在线观看| 国产一区调教| 一区二区不卡在线观看| 香蕉成人啪国产精品视频综合网| 韩国久久久久久| a级国产乱理论片在线观看99| 成人动漫精品一区二区| 欧美色18zzzzxxxxx| 色哟哟网站入口亚洲精品| 亚洲不卡av不卡一区二区| 成人国产一区二区三区| 色系网站成人免费| 超碰精品在线观看| 中文字幕中文字幕在线中心一区| 亚洲激情欧美激情| 亚洲精品.com| 国产一区二区精品在线| 国产精品视频你懂的| www.四虎成人| 3atv在线一区二区三区| 91网页在线观看| 欧美精品久久久久a| 久久99精品一区二区三区| 日韩av地址| 韩国美女主播一区| 国产一区二区电影| 婷婷成人激情| 国产日韩精品入口| 成人免费小视频| 99精品在线免费观看| 永久免费在线看片视频| 在线视频一区二区免费| 国产成人ay| 网上成人av| 欧美福利视频在线| 精品一区二区在线看| 成人在线网址| 好看的日韩精品| 色婷婷久久99综合精品jk白丝| 亚洲人成网www| 天天爱天天做色综合| 欧美精品日韩www.p站| 国产成人精品免费网站| 男人添女人下部高潮视频在线观看| 亚洲一区二区三区香蕉| 亚洲午夜久久久| 欧美日韩123| 成人毛片高清视频观看| 久久精品成人欧美大片古装| 国产精品影视天天线| 天堂av在线| 一区二区三区国产福利| 日韩精品一区二区三区在线观看| 影音先锋久久资源网| 日本韩国一区| 动漫3d精品一区二区三区| 色天天综合久久久久综合片| 888久久久| 成年人在线观看| 5566中文字幕一区二区| 91成人看片片| 毛片一区二区| 激情影院在线| 台湾无码一区二区| 俺去亚洲欧洲欧美日韩| 国产亚洲欧美日韩在线一区| 第四色中文综合网| 樱桃视频免费看| 亚洲综合第一页| 欧美一区二区三级| 国产综合色在线| 精品视频一区二区三区在线观看| 特级丰满少妇一级| 欧美亚洲成人xxx| 99亚洲视频| 麻豆影院在线观看| 水蜜桃亚洲一二三四在线| 日韩电影网在线| 久久综合一区二区| 最新亚洲精品| 青青草视频免费在线观看| 精品久久久久久一区| 日韩av在线免费| 久久久久久一级片| heyzo亚洲| 99re这里只有精品视频首页| 99久久免费精品国产72精品九九| 99久久国产宗和精品1上映| 2019中文在线观看| 一本久久a久久免费精品不卡| 亚洲综合国产| 日韩美女在线看免费观看| 免费看污污网站| 999视频在线免费观看| 亚洲国产精品va在线看黑人动漫| 成人国产精品免费观看视频| 欧美日韩国产免费观看视频| av网站免费在线观看| 欧美激情成人网| 亚洲综合中文字幕在线观看| 亚洲美女性视频|