大量索引場景下 Easysearch 和 Elasticsearch 的吞吐量差異
最近有客戶在使用 Elasticsearch 搜尋服務時發現叢集有掉節點,並且有 master 收集節點資訊超時的日誌,節點的負載也很高,不只是 data 節點,master 和協調節點的 cpu 使用率都很高,看現象叢集似乎遇到了效能瓶頸。
檢視了 Hot_threads, 發現大量執行緒被許可權驗證相關的類和方法佔用,主要在 RBACEngine 和 AuthorizationService 兩個類。並且不止協調節點和資料節點,master 節點居然也有那麼多許可權驗證的操作?
於是懷疑是不是對許可權驗證的使用方式不對,在 github 上搜了下,果然發現有人遇到和我們非常類似的場景。
提到有些個使用者在達到數千或上萬個索引的場景下,在啟用安全驗證進行寫入資料時,服務端幾乎會耗費掉所有 CPU 時間在 transport_worker 執行緒上進行許可權驗證,從而阻塞其他傳入請求,
導致叢集的吞吐量下降,下降的程度似乎是 2 倍到 3 倍。
有人建議升級到 7.16 或更高版本來解決這個問題。
為了確認下我們的產品是否有類似現象,我對兩個服務進行了測試對比,由於硬體資源有限,只對單個節點進行了寫入吞吐的壓測。
測試條件:
- -Xms3g -Xmx3g
- 16 邏輯核 CPU
- 啟用 security 驗證
- 預先建立了 1000 個索引
- 每個索引 1 個 shard,3 個別名
採用相同的 loadgen 指令碼進行壓測, 壓測命令:./loadgen-linux-amd64 -config loadgen-index_0.yml -d 120 -c 10
即每秒 10 個併發請求,持續壓測 120 秒,每個 bulk 請求包含寫入 5000 個 doc,對單個索引進行壓測。
Easysearch 1.0 寫入了 6900000 條。
對比搜尋服務 7.3.2 寫入了 5865000 條。
壓測完畢,顯示 Easysearch 的吞吐大約高出了 17%。
測試時觀察 Hot_threads,Easysearch 除了 lucene 的寫入和 merge 執行緒,未發現許可權驗證相關熱點執行緒,表明了啟用安全驗證不會對 Easysearch 的寫入造成效能影響。
關於 Easysearch
INFINI Easysearch 是一個分散式的近實時搜尋與分析引擎,核心引擎基於開源的 Apache Lucene。Easysearch 的目標是提供一個輕量級的 Elasticsearch 可替代版本,並繼續完善和支援更多的企業級功能。 與 Elasticsearch 相比,Easysearch 更關注在搜尋業務場景的最佳化和繼續保持其產品的簡潔與易用性。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70029458/viewspace-2997253/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL和Elasticsearch使用場景MySqlElasticsearch
- multi-key索引和wildCard索引場景比較索引
- 索引失效場景索引
- 使用Elasticsearch的動態索引和索引優化Elasticsearch索引優化
- Sermant在異地多活場景下的實踐
- 索引設計(組合索引適用場景)索引
- phoenix全域性索引和本地索引 概述,使用場景,區別等詳解索引
- 【Elasticsearch】Elasticsearch 索引模板Elasticsearch索引
- mysql 聯合索引的兩種特殊場景MySql索引
- ElasticSearch 索引 VS MySQL 索引Elasticsearch索引MySql
- MySQL系列:索引失效場景總結MySql索引
- 剖析 Elasticsearch 的索引原理Elasticsearch索引
- elasticsearch索引原理Elasticsearch索引
- 事物系統的幾種異常場景
- TiCDC 在大單表場景下的效能最佳化:我們如何將吞吐量提升 7 倍?
- 日服首月流水破千萬,《戰雙帕彌什》中日市場買量差異有多大?
- Elasticsearch 在業界的大量應用案例Elasticsearch
- DoorDash如何使用 Apache Kafka 和 Elasticsearch 構建更快的索引?ApacheKafkaElasticsearch索引
- HBase寫吞吐場景資源消耗量化分析及優化優化
- HBase 寫吞吐場景資源消耗量化分析及優化優化
- elasticsearch配置注入索引Elasticsearch索引
- Elasticsearch 學習索引Elasticsearch索引
- 【譯】Object與Map的異同及使用場景Object
- 【譯】Array與Set的異同及使用場景
- [淺析]特定場景下取代if-else和switch的方案
- python建立elasticsearch索引的探討PythonElasticsearch索引
- 《Elasticsearch技術解析與實戰》Chapter 1.1:Elasticsearch入門和倒排索引ElasticsearchAPT索引
- 全域性索引失效帶來的幾個測試場景索引
- Elasticsearch 在地理資訊空間索引的探索和演進Elasticsearch索引
- & 號和管道符號(|)在不同場景下的使用方法符號
- [Elasticsearch] ES 的Mapping 設計在實際場景中應用ElasticsearchAPP
- Elasticsearch(三):索引查詢Elasticsearch索引
- elasticsearch之多索引查詢Elasticsearch索引
- elasticsearch如何設計索引Elasticsearch索引
- ES ElasticSearch 7.x 下動態擴大索引的shard數量Elasticsearch索引
- Elasticsearch 索引的對映配置詳解Elasticsearch索引
- 給面試加點硬菜:延遲任務場景,該如何提高吞吐量和時效性!面試
- 運維場景下的兩個自我運維