一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ClickHouse和Elasticsearch壓測對比

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


1 需求分析

1.1 分析壓測對象

1)什么是 ClickHouse 和 Elasticsearch

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

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

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

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

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

1.2 定壓測目標(biāo)

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

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

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

/**
*切ck-queryOBBacklogData
*@paramqueryBO
*@return
*/
publicOutboundBacklogRespBOqueryOBBacklogDataCKNew(OutboundBacklogQueryBOqueryBO){
log.info(" queryOBBacklogDataCK入?yún)ⅲ簕}",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);
//越庫信息-待越庫件數(shù)&待越庫任務(wù)數(shù)
WmsObCrossDockQueryBowmsObCrossDockQueryBo=wmsObCrossDockQueryBoBuilder(queryBO,commonStartTime,commonEndTime);
log.info("queryOBBacklogDataCK-wmsObCrossDockQueryBo:{}",JSON.toJSONString(wmsObCrossDockQueryBo));
CompletableFuturepreCrossDockInfoCF=CompletableFuture.supplyAsync(
()->wmsObCrossDockMapper.preCrossDockInfo(wmsObCrossDockQueryBo),executor);
//集合任務(wù)信息-待分配訂單
WmsObAssignOrderQueryBowmsObAssignOrderQueryBo=wmsObAssignOrderQueryBoBuilder(queryBO,commonStartTime,commonEndTime);
log.info("queryOBBacklogDataCK-wmsObAssignOrderQueryBo:{}",JSON.toJSONString(wmsObAssignOrderQueryBo));
CompletableFuturepreAssignOrderQtyCF=CompletableFuture.supplyAsync(
()->wmsObAssignOrderMapper.preAssignOrderInfo(wmsObAssignOrderQueryBo),executor);
//揀貨信息-待揀貨件數(shù)&待揀貨任務(wù)數(shù)
WmsPickTaskQueryBowmsPickTaskQueryBo=wmsPickTaskQueryBoBuilder(queryBO,commonStartTime,commonEndTime);
log.info("queryOBBacklogDataCK-wmsPickTaskQueryBo:{}",JSON.toJSONString(wmsPickTaskQueryBo));
CompletableFutureprePickingInfoCF=CompletableFuture.supplyAsync(
()->wmsPickTaskMapper.pickTaskInfo(wmsPickTaskQueryBo),executor);
//分播信息-待分播件數(shù)&待分播任務(wù)
WmsCheckTaskDetailQueryBowmsCheckTaskDetailQueryBo=wmsCheckTaskDetailQueryBoBuilder(queryBO,commonStartTime,commonEndTime);
log.info("queryOBBacklogDataCK-wmsCheckTaskDetailQueryBo:{}",JSON.toJSONString(wmsCheckTaskDetailQueryBo));
CompletableFuturepreSowInfoCF=CompletableFuture.supplyAsync(
()->wmsCheckTaskDetailMapper.checkTaskDetailInfo(wmsCheckTaskDetailQueryBo),executor);
//發(fā)貨信息-待發(fā)貨件數(shù)
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)查詢的數(shù)據(jù)量,如下:

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截圖中,查詢待越庫文件數(shù)&待越庫任務(wù)數(shù)共讀取720817行數(shù)據(jù)

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 截圖共讀取了,可以從查詢?nèi)蝿?wù)信息 - 集合待分配訂單,153118 行數(shù)據(jù)

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截圖&可以從查詢揀貨任務(wù)信息-待揀貨件數(shù)條,共讀到2673536個數(shù)據(jù)

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截圖-可以從分查詢分播信息行數(shù)待播播任務(wù),共讀148149個數(shù)據(jù)

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 共讀取可以從查詢收到的信息 - 待件數(shù),截圖 99591 行數(shù)據(jù)

基于 Spring Boot + MyBatis Plus + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

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

2 測試環(huán)境準(zhǔn)備

為了發(fā)揮壓測作用,履行壓測環(huán)境,應(yīng)該使用其他類似的環(huán)境一致,所以我們應(yīng)該使用類似的環(huán)境一致了和類似的環(huán)境

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

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

3 采集工具準(zhǔn)備

工具監(jiān)控

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

4 壓測執(zhí)行及結(jié)果分析

4.1 編寫壓測腳本工具

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

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

4.2 設(shè)計壓測數(shù)據(jù)

4.2.1 壓測中名詞解釋

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

4.2.2 壓測數(shù)據(jù)

clickhouse數(shù)據(jù)服務(wù):32C128G6節(jié)點2副本

應(yīng)用服務(wù)器:4 核 8G 2maxTotal=16

注: 每次壓測前,一定要觀察每個數(shù)據(jù)節(jié)點的 cpu 使用率

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

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

之后我們調(diào)整 max50,通過 max_thread 不同的值,節(jié)點 CPU 使用率保持在左右,來查看數(shù)據(jù):服務(wù)器 CPU 使用率、TP、TP99、應(yīng)用指標(biāo)總比例 = 監(jiān)控數(shù)。

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

clickhouse 數(shù)據(jù)節(jié)點,CPU 使用率:

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

Elasticsearch 數(shù)據(jù)服務(wù):328G6 2 2 副本應(yīng)用服務(wù)器:4 8G 2Elasticsearch 節(jié)點服務(wù)器保持?jǐn)?shù)據(jù)庫服務(wù)器 CPU 使用率達(dá)到50%左右(50%左右),重新監(jiān)控數(shù)據(jù)節(jié)點、tp99 指標(biāo):coating 節(jié)點協(xié)調(diào)數(shù)、數(shù)據(jù)節(jié)點大小

指標(biāo)1:coordinating=2,數(shù)據(jù)偏差=4,poolSize=400

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

在測的過程中,CPU 的使用率達(dá)到 51.6%,注平均的發(fā)現(xiàn)率在 9% 的情況下,協(xié)調(diào)每個節(jié)點的負(fù)載率,所以需要協(xié)調(diào)每個節(jié)點

指標(biāo)2:coordinating=4,數(shù)據(jù)偏差=5,poolSize=800

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

注: 在壓測的過程中,發(fā)現(xiàn)CPU使用率(數(shù)據(jù)庫)ES數(shù)據(jù)節(jié)點在40%左右的時候,發(fā)現(xiàn)一直上不去,查看日志activeCount已經(jīng)達(dá)到797,需要增加poolSize值

指標(biāo)3:coordinating=4,數(shù)據(jù)偏差=5,poolSize=1200

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

注: 壓測過程中,發(fā)現(xiàn)協(xié)調(diào)節(jié)點支持還是需要擴容,不能現(xiàn)在數(shù)據(jù)節(jié)點cpu使用率達(dá)到50%Elasticsearch數(shù)據(jù)節(jié)點及協(xié)調(diào)節(jié)點,CPU使用率:

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

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

4.3 結(jié)果分析

4.3.1 測試結(jié)束

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

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

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

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

考考,認(rèn)為clickhouse是我們普遍接受我們的業(yè)務(wù)訴求

4.3.2 優(yōu)化建議

  1. 對 ES 協(xié)商節(jié)點進行擴容
  2. bigdata 應(yīng)用至最大線程數(shù)調(diào)高 200
  3. bigdata 應(yīng)用 dbcp 線程池 maxTotal 設(shè)置成 50
  4. 讀取配置文件工具類增加內(nèi)存緩存


審核編輯:湯梓紅


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11013

    瀏覽量

    215303
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3537

    瀏覽量

    43318
  • 腳本
    +關(guān)注

    關(guān)注

    1

    文章

    395

    瀏覽量

    28309
  • Elasticsearch
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    2960

原文標(biāo)題:ClickHouse和Elasticsearch壓測對比,誰是yyds?

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

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    Windows安裝ElasticSearch

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

    linux安裝配置ElasticSearch之源碼安裝

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

    ElasticSearch的詞條查詢

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

    大數(shù)據(jù)實時分析領(lǐng)域的ClickHouse

    ClickHouse大數(shù)據(jù)實時分析領(lǐng)域的黑馬
    發(fā)表于 03-24 11:09

    ElasticSearch的初步環(huán)境

    ElasticSearch最實用入門指南——初步環(huán)境
    發(fā)表于 03-31 11:32

    Centos7下如何搭建ClickHouse列式存儲數(shù)據(jù)庫

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

    elasticsearch介紹PPT

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

    Elasticsearch6.1教程

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

    ClickHouse與esProc SPL性能對比

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

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

    來源:juejin.cn/post/7120880190003085320 背景 ElasticsearchClickHouse 成本分析 環(huán)境部署 總結(jié) ? 背景 saas業(yè)務(wù)業(yè)務(wù)未來需要
    的頭像 發(fā)表于 10-09 17:41 ?2249次閱讀

    ElasticSearch是什么?應(yīng)用場景是什么?

    ElasticSearch是什么 ElasticSearch的功能 ElasticSearch的應(yīng)用場景 ElasticSearch的特點
    的頭像 發(fā)表于 10-09 18:38 ?2649次閱讀

    火山引擎:ClickHouse增強計劃之“多表關(guān)聯(lián)查詢”

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

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

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

    Elasticsearch保姆級入門

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

    SpringBoot 連接ElasticSearch的使用方式

    在上篇 ElasticSearch 文章中,我們詳細(xì)的介紹了 ElasticSearch 的各種 api 使用。 實際的項目開發(fā)過程中,我們通?;谀承┲髁骺蚣芷脚_進行技術(shù)開發(fā),比如
    的頭像 發(fā)表于 10-09 10:35 ?1534次閱讀