当前位置: 首页 > wzjs >正文

公司网站建设7个基本流程怎么申请域名建立网站

公司网站建设7个基本流程,怎么申请域名建立网站,香港的网站需要备案吗,1.申请网站空间背景 本文基于 StarRocks 3.3.5 最近在做一些 StarRocks 相关的指标监控的时候,看到了FE master的CPU使用率相对其他FE节点是比较高的,且 呈现周期性的变化(周期为8分钟), 于此同时FE master节点的GC频率相对于其他节…

背景

本文基于 StarRocks 3.3.5
最近在做一些 StarRocks 相关的指标监控的时候,看到了FE master的CPU使用率相对其他FE节点是比较高的,且 呈现周期性的变化(周期为8分钟),
于此同时FE master节点的GC频率相对于其他节点高出很多倍,于是我们利用arthas采集了大约15分钟CPU的火焰图。如下:
在这里插入图片描述
对应的FE master节点的CPU使用率的变化如下图:
在这里插入图片描述
FE 其他节点的CPU使用率的变化如下图:
在这里插入图片描述

对应的FE master节点的Young GC的变化如下图:
在这里插入图片描述

FE 其他节点的Young GC变化如下图:
在这里插入图片描述

结论

CPU使用率高的主要集中在三个点:

  1. StatisticAutoCollector(占用28%)
  2. MemoryUsageTracker (占用9%)
  3. JVM GC(占用57%)
    因为在我们的场景下,实时写入的任务比较多,且写入的是分区表(由于业务的场景问题,会更新以前分区的数据),所以会导致 StatisticAutoCollector 进行相关统计信息的收集,而这个统计信息的收集,会触发System.gc操作,从而导致FE master节点的 gc频率比其他节点高很多。

分析

StatisticAutoCollector

StatisticAutoCollector 这个类只有在FE Master才会被调用,且调用的频率为statistic_collect_interval_sec,也就是5分钟。
该线路数据流为:

StatisticAutoCollector.runAfterCatalogReady||\/
runJobs||\/
StatisticExecutor.collectStatistics||\/
FullStatisticsCollectJob.collect||\/
collectStatisticSync||\/
StmtExecutor.executeStatisticDQL||\/
StmtExecutor.executeDQL||\/
StatementPlanner.plan //走到 生成计划||\/
createQueryPlanWithReTry||\/
collectOriginalOlapTables||\/
OlapTable.copyOnlyForQuery||\/
partitionInfo.clone()

partitionInfo.clone() 会初始化HashMap来复制partiiton的信息:

 protected Object clone()  {try {PartitionInfo p = (PartitionInfo) super.clone();p.type = this.type;p.idToDataProperty = new HashMap<>(this.idToDataProperty);p.idToReplicationNum = new HashMap<>(this.idToReplicationNum);p.isMultiColumnPartition = this.isMultiColumnPartition;p.idToInMemory = new HashMap<>(this.idToInMemory);p.idToTabletType = new HashMap<>(this.idToTabletType);p.idToStorageCacheInfo = new HashMap<>(this.idToStorageCacheInfo);return p;} catch (CloneNotSupportedException e) {throw new RuntimeException(e);}}

所以说在这种要收集的分区信息很多的情况下,HashMap的初始化,就很消耗CPU。
再者,在collectStatistics 之前会通过 StatisticsCollectJobFactory.buildStatisticsCollectJob 这个方法计算出要收集的 FullStatisticsCollectJob ,这里会通过执行select $quoteColumnName as column_key from $dbName.$tableName partition $partitionName这种方法收集每个分区中某些字段的信息,这里后续会详细说

MemoryUsageTracker

StatisticAutoCollector 这个类只有在FE Master才会被调用,且调用的频率为 memory_tracker_interval_seconds ,也就是1分钟。
该类的数据流为:

MemoryUsageTracker.runAfterCatalogReady||\/
MemoryUsageTracker.trackMemory||\/
MemoryTrackable.estimateSize||\/
SizeEstimator.estimate

这里会根据初始化方法initMemoryTracker涉及到的对象进行内存的评估,具体的对象如下:

 private void initMemoryTracker() {GlobalStateMgr currentState = GlobalStateMgr.getCurrentState();registerMemoryTracker("Load", currentState.getLoadMgr());registerMemoryTracker("Load", currentState.getRoutineLoadMgr());registerMemoryTracker("Load", currentState.getStreamLoadMgr());registerMemoryTracker("Load", currentState.getInsertOverwriteJobMgr());registerMemoryTracker("Compaction", currentState.getCompactionMgr());registerMemoryTracker("Export", currentState.getExportMgr());registerMemoryTracker("Delete", currentState.getDeleteMgr());registerMemoryTracker("Transaction", currentState.getGlobalTransactionMgr());registerMemoryTracker("Backup", currentState.getBackupHandler());registerMemoryTracker("Task", currentState.getTaskManager());registerMemoryTracker("Task", currentState.getTaskManager().getTaskRunManager());registerMemoryTracker("TabletInvertedIndex", currentState.getTabletInvertedIndex());registerMemoryTracker("LocalMetastore", currentState.getLocalMetastore());registerMemoryTracker("Query", new QueryTracker());registerMemoryTracker("Profile", ProfileManager.getInstance());registerMemoryTracker("Agent", new AgentTaskTracker());QeProcessor qeProcessor = QeProcessorImpl.INSTANCE;if (qeProcessor instanceof QeProcessorImpl) {registerMemoryTracker("Coordinator", (QeProcessorImpl) qeProcessor);}IDictManager dictManager = IDictManager.getInstance();if (dictManager instanceof CacheDictManager) {registerMemoryTracker("Dict", (CacheDictManager) dictManager);}memoryMXBean = ManagementFactory.getMemoryMXBean();LOG.info("Memory usage tracker init success");initialize = true;}

这里会对里面涉及到的所有对象进行内存的评估,用来后续的内存使用指标显示。

JVM GC

这个方法是在每个SQL执行完后就会触发的,具体的数据流为:

StatisticAutoCollector.runJobs||\/StatisticExecutor.collectStatistics||\/FullStatisticsCollectJob.collect||\/FullStatisticsCollectJob.collectStatisticSync ||\/flushInsertStatisticsData ||\/StmtExecutor.execute() ||\/GlobalStateMgr.getCurrentState().getMetadataMgr().removeQueryMetadata();||\/queryMetadatas.metadatas.values().forEach(ConnectorMetadata::clear)||\/LocalMetaStore.clear ->  System.gc()

当然这也只是该 StatisticAutoCollector 定时的触发的,还有如果有查询SQL的话,也会进行触发。具体看 StmtExecutor.execute方法:

   public void execute() throws Exception {...try {...} finally {GlobalStateMgr.getCurrentState().getMetadataMgr().removeQueryMetadata();if (context.getState().isError() && coord != null) {coord.cancel(PPlanFragmentCancelReason.INTERNAL_ERROR, context.getState().getErrorMessage());}if (parsedStmt != null && parsedStmt.isExistQueryScopeHint()) {clearQueryScopeHintContext();}// restore session variable in connect contextcontext.setSessionVariable(sessionVariableBackup);}}
http://www.dtcms.com/wzjs/382605.html

相关文章:

  • wordpress wpml下载阜阳seo
  • 网站如何做攻击防护百度竞价的优势和劣势
  • 淘宝做网站推广人电话百度服务中心人工客服
  • 泉州软件开发公司优化优化
  • 网站上传附件大小限制微信营销的案例
  • 免费动态图片素材网站关键词优化精灵
  • dedecms小说网站模板东莞seo外包公司哪家好
  • 网站建设团购菏泽资深seo报价
  • 珠海营销网站建设seo技术培训广东
  • 网站课程设计报告网站如何提升seo排名
  • 盘锦网站开发找文网客服联系方式
  • 易语言做动态网站域名注册网站系统
  • o2o网站建设哪家好市场调研报告
  • 积极做好门户网站建设工作手机系统优化工具
  • 医院网站建设策划网站统计代码
  • 在越南注册公司需要多少钱aso优化怎么做
  • 网站交给别人做安全吗百度推广收费多少
  • 哪些软件可以做网站设计seowhy教研室
  • 网站开发报价模版网站平台做推广
  • 安装wordpress+000某企业网站的分析优化与推广
  • 珠海做企业网站百度搜索榜排名
  • Wordpress去掉左上角标志seosem是什么职位
  • 百度seo排名优化价格seo网络推广案例
  • 价格划算的做网站广州seo网站优化培训
  • 鲅鱼圈网站怎么做深圳网站开发公司
  • 个体户做网站有用吗利尔化学股票最新消息
  • 我国疫情最新消息百度自然排名优化
  • 开封网站优化seo研究协会网
  • 做家乡网站代码郑州网站建设制作
  • 网站建设最好的公司semi认证