色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ClickHouse和Elasticsearch壓測對比

我快閉嘴 ? 來源:OSCHINA開源中國 ? 作者: 京東云開發者 ? 2022-09-15 15:49 ? 次閱讀


1 需求分析

1.1 分析壓測對象

1)什么是 ClickHouse 和 Elasticsearch

ClickHouse 是一個真正的列式數據庫管理系統(MS)。在 ClickHouse 中,數據始終是列存儲的,包括向量(對或列塊)的執行過程。只要有可能,操作都是基于向量進行分派的,而不是實現的價值,這被稱為?它有查詢實際的數據處理?。

Elasticsearch 是一款開源的引擎可以使用、這樣的RESTful 風格的搜索分析,它的Apache 是開源的開源引擎。

  • 一個索引的索引文檔存儲,字段可以被與搜索
  • 一個實時分析搜索引擎
  • 勝上百個服務節點的擴展支持PB人物的任性或非血數據

2)為什么要對他們進行壓測

是的劇集,非常多的點擊屋在場景中具有出色的性能,具有復雜性的基本業務查詢,但我們卻有一個非常重要的查詢業務場景,甚至是雙十一業務的真實情況,確保大型活動具有業務能力的持續性,ClickHouse 和 Elasticsearch 的性能業務場景中是否具備性能優良的性能,通過性能壓測,中壓我們的任務點,進行抗壓,優化設計性能。

1.2 定壓測目標

245c4288-3248-11ed-ba43-dac502259ad0.png

會選擇這個(queryOBBacklogData)接口呢?

1)從復雜度來看,接口(queryOBBacklogData)查詢了5次,代碼如下:

/**
*切ck-queryOBBacklogData
*@paramqueryBO
*@return
*/
publicOutboundBacklogRespBOqueryOBBacklogDataCKNew(OutboundBacklogQueryBOqueryBO){
log.info(" queryOBBacklogDataCK入參:{}",JSON.toJSONString(queryBO));
//公共條件-卡最近十天時間
StringcommonStartTime=DateUtils.getTime(DateUtil.format(newDate(),DateUtil.FORMAT_DATE),DateUtils.ELEVEN_AM,1,-10);
StringcommonEndTime=DateUtils.getTime(DateUtil.format(newDate(),DateUtil.FORMAT_DATE),DateUtils.ELEVEN_AM,1,1);
//越庫信息-待越庫件數&待越庫任務數
WmsObCrossDockQueryBowmsObCrossDockQueryBo=wmsObCrossDockQueryBoBuilder(queryBO,commonStartTime,commonEndTime);
log.info("queryOBBacklogDataCK-wmsObCrossDockQueryBo:{}",JSON.toJSONString(wmsObCrossDockQueryBo));
CompletableFuturepreCrossDockInfoCF=CompletableFuture.supplyAsync(
()->wmsObCrossDockMapper.preCrossDockInfo(wmsObCrossDockQueryBo),executor);
//集合任務信息-待分配訂單
WmsObAssignOrderQueryBowmsObAssignOrderQueryBo=wmsObAssignOrderQueryBoBuilder(queryBO,commonStartTime,commonEndTime);
log.info("queryOBBacklogDataCK-wmsObAssignOrderQueryBo:{}",JSON.toJSONString(wmsObAssignOrderQueryBo));
CompletableFuturepreAssignOrderQtyCF=CompletableFuture.supplyAsync(
()->wmsObAssignOrderMapper.preAssignOrderInfo(wmsObAssignOrderQueryBo),executor);
//揀貨信息-待揀貨件數&待揀貨任務數
WmsPickTaskQueryBowmsPickTaskQueryBo=wmsPickTaskQueryBoBuilder(queryBO,commonStartTime,commonEndTime);
log.info("queryOBBacklogDataCK-wmsPickTaskQueryBo:{}",JSON.toJSONString(wmsPickTaskQueryBo));
CompletableFutureprePickingInfoCF=CompletableFuture.supplyAsync(
()->wmsPickTaskMapper.pickTaskInfo(wmsPickTaskQueryBo),executor);
//分播信息-待分播件數&待分播任務
WmsCheckTaskDetailQueryBowmsCheckTaskDetailQueryBo=wmsCheckTaskDetailQueryBoBuilder(queryBO,commonStartTime,commonEndTime);
log.info("queryOBBacklogDataCK-wmsCheckTaskDetailQueryBo:{}",JSON.toJSONString(wmsCheckTaskDetailQueryBo));
CompletableFuturepreSowInfoCF=CompletableFuture.supplyAsync(
()->wmsCheckTaskDetailMapper.checkTaskDetailInfo(wmsCheckTaskDetailQueryBo),executor);
//發貨信息-待發貨件數
WmsOrderSkuQueryBowmsOrderSkuQueryBo=wmsOrderSkuQueryBoBuilder(queryBO,commonStartTime,commonEndTime);
log.info("queryOBBacklogDataCK-wmsOrderSkuQueryBo:{}",JSON.toJSONString(wmsOrderSkuQueryBo));
CompletableFuturepreDispatchCF=CompletableFuture.supplyAsync(
()->wmsOrderSkuMapper.preDispatchInfo(wmsOrderSkuQueryBo),executor);
returnprocessResult(preCrossDockInfoCF,preAssignOrderQtyCF,prePickingInfoCF,preSowInfoCF,preDispatchCF);
}

2)查詢表(OBBacklogData),查詢了5個表:

wms.wms_ob_cross_dock
wms.wms_ob_assign_order
wms.wms_picking_task.
wms.wms_check_task_detail
wms.wms_order_sku

3)查詢的數據量,如下:

select
(ifnull(sum(m.shouldBeCrossedDockQty),
0)-
ifnull(sum(m.satisfiedCrossedDockQty),
0))aspreCrossStockSkuQty,
count(m.docId)aspreCrossStockTaskQty
from
wms.wms_ob_cross_dockmfinal
prewhere
m.createTime>='2021-12-031100'
andm.createTime<=?'2021-12-141100'
andm.warehouseNo='279_1'
andm.orderType='10'
andtenantCode='TC90230202'
where
m.deleted=0
andm.deliveryDestination='2'
andm.shipmentOrderDeleted=0
andm.status=0
246ed93e-3248-11ed-ba43-dac502259ad0.png

可以從上面的SQL截圖中,查詢待越庫文件數&待越庫任務數共讀取720817行數據

selectcount(distinctm.orderNo)aspreAssignedOrderQty
fromwms.wms_ob_assign_ordermfinal
prewhere
m.createTime>='2021-12-031100'
andm.createTime<=?'2021-12-141100'
andm.warehouseNo='361_0'
andtenantCode='TC90230202'
wherem.taskassignStatus=0
andm.deliveryDestination=2
andm.stopProductionFlag=0
andm.deleted=0
andm.orderType=10
247d767e-3248-11ed-ba43-dac502259ad0.png

上面的 SQL 截圖共讀取了,可以從查詢任務信息 - 集合待分配訂單,153118 行數據

selectminus(toInt32(ifnull(sum(m.locateQty),toDecimal64(0,4))),
toInt32(ifnull(sum(m.pickedQty),toDecimal64(0,4))))asprePickingSkuQty,
count(distinctm.taskNo)asprePickingTaskQty
fromwms.wms_picking_taskmfinal
prewhere
m.shipmentOrderCreateTime>='2021-12-031100'
andm.shipmentOrderCreateTime<=?'2021-12-141100'
andm.warehouseNo='286_1'
andtenantCode='TC90230202'
wherem.pickingTaskDeleted=0
andm.deliveryDestination=2
andm.pickLocalDetailDeleted=0
andm.shipmentOrderDeleted=0
andm.orderType=10
and(m.operateStatus=0orm.operateStatus=1)
248e5ab6-3248-11ed-ba43-dac502259ad0.png

上面的SQL截圖&可以從查詢揀貨任務信息-待揀貨件數條,共讀到2673536個數據

selectminus(toInt32(ifnull(sum(m.locateQty),toDecimal64(0,4))),
toInt32(ifnull(sum(m.pickedQty),toDecimal64(0,4))))asprePickingSkuQty,
count(distinctm.taskNo)asprePickingTaskQty
fromwms.wms_picking_taskmfinal
prewhere
m.shipmentOrderCreateTime>='2021-12-031100'
andm.shipmentOrderCreateTime<=?'2021-12-141100'
andm.warehouseNo='279_1'
andtenantCode='TC90230202'
wherem.pickingTaskDeleted=0
andm.deliveryDestination=2
andm.pickLocalDetailDeleted=0
andm.shipmentOrderDeleted=0
andm.orderType=10
and(m.operateStatus=0orm.operateStatus=1)
249af122-3248-11ed-ba43-dac502259ad0.png

以上SQL截圖-可以從分查詢分播信息行數待播播任務,共讀148149個數據

selectifnull(sum(m.unTrackQty),0)asunTrackQty
fromwms.wms_order_skumfinal
prewhere
m.shipmentOrderCreateTime>='2021-12-031100'
andm.shipmentOrderCreateTime<=?'2021-12-141100'
andm.warehouseNo='280_1'
andm.orderType='10'
andm.deliveryDestination='2'
andtenantCode='TC90230202'
wherem.shipmentOrderDeleted<>'1'
andm.ckDeliveryTaskDeleted<>'1'
andm.ckDeliveryTaskDetailDeleted<>'1'
andm.ckDeliveryTaskStatusin('1','0','2')
24a7c118-3248-11ed-ba43-dac502259ad0.png

上面的 SQL 共讀取可以從查詢收到的信息 - 待件數,截圖 99591 行數據

基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • 視頻教程:https://doc.iocoder.cn/video/

2 測試環境準備

為了發揮壓測作用,履行壓測環境,應該使用其他類似的環境一致,所以我們應該使用類似的環境一致了和類似的環境

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://gitee.com/zhijiantianya/yudao-cloud
  • 視頻教程:https://doc.iocoder.cn/video/

3 采集工具準備

工具監控

  • http://origin.jd.com/ :監控 JVM,方法等級監控(提供秒級支持)
  • http ://console.jex.jd/ :提供異常監控,火焰圖監控、資源分析。
  • http://x.devops.jdcloud.com/ :支持查看clickhouse/Elasticsearch 數據庫服務器每個節點的cpu使用率
  • http://dashboard.fireeye.jdl.cn/ :應用服務器cpu使用率、內存使用率監控

4 壓測執行及結果分析

4.1 編寫壓測腳本工具

Forcebot(http://force.jd.com) 是一個為開發人員、測試人員提供的性能測試平臺,通過編寫、配置、場景任務、實時監控、日志定位、發布監控、設置報告操作的流程來完成測試,靈活的腳本配置滿足同步性能、異步、集合點等各種發壓模式。

幫助文檔(http://doc.jd.com/forcebot/helper/)

4.2 設計壓測數據

4.2.1 壓測中名詞解釋

  • DBCP:數據庫連接,是apache的一個Java連接項目。DBCP通過連接池上的數據庫同建立一些連接內存中(即連接池中),應用程序需要建立數據庫時直接到從連接池中申請一個連接使用,使用后由回收該連接,從而達到連接復用完成,減少資源消耗的目的。
  • maxTotal:是連接池中總連接的最大數量,默認值為8
  • max_thread:clickhouse中配置,處理SQL請求時使用的最大線程數。數值是clickhouse服務器的核心數量。
  • 協調:協調節點數,主要作用于請求,請求轉發請求響應處理等輕量級
  • 數據節點:主要是存儲索引節點的節點,主要是對文檔進行刪除,聚合操作等。的時候,需要在群里添加新的節點

4.2.2 壓測數據

clickhouse數據服務:32C128G6節點2副本

應用服務器:4 核 8G 2maxTotal=16

注: 每次壓測前,一定要觀察每個數據節點的 cpu 使用率

24b360a4-3248-11ed-ba43-dac502259ad0.png

注: 從上面的壓測過程中,序號-12,數據庫中的數據庫中的數據池中的數據可以在tps 6號,但沒有增加數據庫中的大數據,但沒有更多的變化,檢查數字未配置,默認的數字是連接的8個最大的地方用戶數增加至8以后,clickhouse cpu穩定在40%~50%之間不再增加,應用服務器CPU穩定在25%左右。

之后我們調整 max50,通過 max_thread 不同的值,節點 CPU 使用率保持在左右,來查看數據:服務器 CPU 使用率、TP、TP99、應用指標總比例 = 監控數。

24c285c0-3248-11ed-ba43-dac502259ad0.png

clickhouse 數據節點,CPU 使用率:

24d13264-3248-11ed-ba43-dac502259ad0.png

Elasticsearch 數據服務:328G6 2 2 副本應用服務器:4 8G 2Elasticsearch 節點服務器保持數據庫服務器 CPU 使用率達到50%左右(50%左右),重新監控數據節點、tp99 指標:coating 節點協調數、數據節點大小

指標1:coordinating=2,數據偏差=4,poolSize=400

24dddb18-3248-11ed-ba43-dac502259ad0.png

在測的過程中,CPU 的使用率達到 51.6%,注平均的發現率在 9% 的情況下,協調每個節點的負載率,所以需要協調每個節點

指標2:coordinating=4,數據偏差=5,poolSize=800

24ea547e-3248-11ed-ba43-dac502259ad0.png

注: 在壓測的過程中,發現CPU使用率(數據庫)ES數據節點在40%左右的時候,發現一直上不去,查看日志activeCount已經達到797,需要增加poolSize值

指標3:coordinating=4,數據偏差=5,poolSize=1200

24f5739a-3248-11ed-ba43-dac502259ad0.png

注: 壓測過程中,發現協調節點支持還是需要擴容,不能現在數據節點cpu使用率達到50%Elasticsearch數據節點及協調節點,CPU使用率:

25004680-3248-11ed-ba43-dac502259ad0.png

我們在壓測的過程中發現一些在開發過程中沒有發現的問題,首先 bdcp 數大數據應用服務器,使用的線程池數線程數為 8 時,使需求,用戶增加至 8 以后,clickhouse 的 cpu CPU 20%~55%之間穩定左右穩定,CPU 40%左右穩定運行,CPU40服務器20左右,服務器使用率高,是clickhouse-jdbc解析sql效率低。

4.3 結果分析

4.3.1 測試結束

1)clickhouse對有一定的支持,通過不支持高線程,可以調整線程的增加

  • max_thread=32 時,支持最大TPS 為37,相應TP99 為122
  • max_thread=2 時,支持最大TPS 66,相應TP99 155
  • max_thread=1 時,支持最大TPS 86,相應TP99 206

2)在很多方面,Elasticsearch 比 clickhouse 支持的更好,但相應的響應速度慢

  • Elasticsearch:TPS 是 192,TP99 是 3050
  • clickhouse:TPS 是 86,TP99 是 206

考考,認為clickhouse是我們普遍接受我們的業務訴求

4.3.2 優化建議

  1. 對 ES 協商節點進行擴容
  2. bigdata 應用至最大線程數調高 200
  3. bigdata 應用 dbcp 線程池 maxTotal 設置成 50
  4. 讀取配置文件工具類增加內存緩存


審核編輯:湯梓紅


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10855

    瀏覽量

    211594
  • 開源
    +關注

    關注

    3

    文章

    3320

    瀏覽量

    42473
  • 腳本
    +關注

    關注

    1

    文章

    389

    瀏覽量

    14858
  • Elasticsearch
    +關注

    關注

    0

    文章

    28

    瀏覽量

    2827

原文標題:ClickHouse和Elasticsearch壓測對比,誰是yyds?

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Windows安裝ElasticSearch

    Windows安裝ElasticSearch
    的頭像 發表于 02-15 17:09 ?978次閱讀
    Windows安裝<b class='flag-5'>ElasticSearch</b>

    linux安裝配置ElasticSearch之源碼安裝

    ElasticSearch是基于Lucene這個非常成熟的索引方案,另加上一些分布式的實現:集群,sharding,replication等。以下是對其采用源碼安裝的方法1.下載
    發表于 01-11 17:27

    ElasticSearch的詞條查詢

    ElasticSearch查詢 第三篇:詞條查詢
    發表于 04-30 17:03

    大數據實時分析領域的ClickHouse

    ClickHouse大數據實時分析領域的黑馬
    發表于 03-24 11:09

    ElasticSearch的初步環境

    ElasticSearch最實用入門指南——初步環境
    發表于 03-31 11:32

    Centos7下如何搭建ClickHouse列式存儲數據庫

    一、ClickHouse簡介1、基礎簡介Yandex開源的數據分析的數據庫,名字叫做ClickHouse,適合流式或批次入庫的時序數據。ClickHouse不應該被用作通用數據庫,而是作為超高
    發表于 01-05 18:03

    elasticsearch介紹PPT

    elasticsearch介紹PPT
    發表于 12-13 21:05 ?20次下載

    Elasticsearch6.1教程

    Elasticsearch6.1教程
    發表于 07-04 14:40 ?0次下載

    ClickHouse與esProc SPL性能對比

    開源分析數據庫 ClickHouse 以快著稱,真的如此嗎?我們通過對比測試來驗證一下。
    的頭像 發表于 09-27 10:52 ?1166次閱讀

    替代ELK:ClickHouse+Kafka+FlieBeat才是最絕的

    來源:juejin.cn/post/7120880190003085320 背景 ElasticsearchClickHouse 成本分析 環境部署 總結 ? 背景 saas業務業務未來需要
    的頭像 發表于 10-09 17:41 ?2051次閱讀

    ElasticSearch是什么?應用場景是什么?

    ElasticSearch是什么 ElasticSearch的功能 ElasticSearch的應用場景 ElasticSearch的特點
    的頭像 發表于 10-09 18:38 ?2450次閱讀

    火山引擎:ClickHouse增強計劃之“多表關聯查詢”

    相信大家都對大名鼎鼎的ClickHouse有一定的了解了,它強大的數據分析性能讓人印象深刻。但在字節大量生產使用中,發現了ClickHouse依然存在了一定的限制。例如: ? 缺少完整的upsert
    的頭像 發表于 10-10 17:00 ?1559次閱讀

    ClickHouse增強計劃之“資源隔離”

    ClickHouse的資源管控能力不夠完善,在 insert、select 并發高的場景下會導致執行失敗,影響用戶體驗。這是因為社區版ClickHouse目前僅提供依據不同用戶的最大內存控制,在超過閾值時會殺死執行的 query。
    的頭像 發表于 11-07 10:25 ?868次閱讀

    Elasticsearch保姆級入門

    我們需要創建一個供 Elasticsearch 和 Kibana 使用的 network。這個 network 將被用于 Elasticsearch 和 Kibana 之間的通信。
    的頭像 發表于 09-01 15:24 ?837次閱讀
    <b class='flag-5'>Elasticsearch</b>保姆級入門

    SpringBoot 連接ElasticSearch的使用方式

    在上篇 ElasticSearch 文章中,我們詳細的介紹了 ElasticSearch 的各種 api 使用。 實際的項目開發過程中,我們通常基于某些主流框架平臺進行技術開發,比如
    的頭像 發表于 10-09 10:35 ?1101次閱讀
    主站蜘蛛池模板: 麻豆一二三四区乱码| 亚洲一区免费在线观看| 久久se精品一区二区国产| 好男人午夜www视频在线观看| 伊人久久影院| 久久中文字幕综合不卡一二区| 成人毛片18岁女人毛片免费看| 亚洲午夜精品AV无码少妇| 日韩经典欧美一区二区三区| 成人免费视频在线| 夜夜精品视频一区二区| 视频一区精品自拍亚洲| 嗯啊好爽视频| 成人免费肉动漫无遮网站| 98久久无码一区人妻A片蜜| 亚洲国产在线观看免费视频| 熟女啪啪白浆嗷嗷叫| 欧美极品尿交| 黑人巨茎大战白人女40CMO| 国产精品久久人妻无码网站一区无| 最新无码二区日本专区| 日韩精品AV一区二区三区| 欧美人与善交大片| 欧美AAAAAA级午夜福利视频| 媚药调教被撑到合不拢h| 久久精品电影网| 久久综合伊人 magnet| 美女被艹网站| 欧美大片免费| 色欲AV色欲AV久久麻豆| 三级黄色在线视频| 午夜国产在线观看| 亚洲人成电影网站在线观看| 亚洲视频免费看| 艳鉧动漫片1~6全集在线| 一道本av免费不卡播放| 中文字幕成人在线观看| a免费在线观看视频| 动态抽插图视频| 娇妻让壮男弄的流白浆 | 亚洲精品永久免费|