找出mongodb的jumbo块并进行分裂

https://www.cnblogs.com/abclife/p/15968628.html

根据这篇文档中的脚本,在我们自己的环境中跑了下,第一次跑的结果如下:

运行完上面跑出的split脚本后,还是存在jumbo块,第二次跑出的结果:

从上面结果可以看出,chunks的数量增加了,但jumbo chunks的数量没有减少很多。

也和阿里云后台沟通,jumbo chunk不能分裂的原因:

因为大部分jumbo chunk是相同shard key组成的,所以无法继续分割。

不知道有没有通过这种方法分割成功的案例。

具体运行脚本如下:

1、使用以下脚本找出未被检测到的Jumbo块,并生成相关命令:

var allChunkInfo = function(ns){

    var chunks = db.getSiblingDB("config").chunks.find({"ns" : ns}).sort({min:1}).noCursorTimeout(); //this will return all chunks for the ns ordered by min

    var totalChunks = 0;

    var totalJumbo = 0;

    var totalSize = 0;

    var totalEmpty = 0;

  

    chunks.forEach(

        function printChunkInfo(chunk) {

          var db1 = db.getSiblingDB(chunk.ns.split(".")[0]) // get the database we will be running the command against later

          var key = db.getSiblingDB("config").collections.findOne({_id:chunk.ns}).key; // will need this for the dataSize call

          

          // dataSize returns the info we need on the data, but using the estimate option to use counts is less intensive

          var dataSizeResult = db1.runCommand({datasize:chunk.ns, keyPattern:keymin:chunk.minmax:chunk.max, estimate:false});

          

          if(dataSizeResult.size > 67108864) {

            totalJumbo++;

            print('sh.splitFind("' + chunk.ns.toString() + '", ' + JSON.stringify(chunk.min) + ')' ' // '+  chunk.shard + '    ' + Math.round(dataSizeResult.size/1024/1024) + ' MB    ' + dataSizeResult.numObjects );

          }

          totalSize += dataSizeResult.size;

          totalChunks++;

           

          if (dataSizeResult.size == 0) { totalEmpty++ }; //count empty chunks for summary

          }

    )

    print("***********Summary Chunk Information***********");

    print("Total Chunks: "+totalChunks);

    print("Total Jumbo Chunks: "+totalJumbo);

    print("Average Chunk Size (Mbytes): "+(totalSize/totalChunks/1024/1024));

    print("Empty Chunks: "+totalEmpty);

    print("Average Chunk Size (non-empty): "+(totalSize/(totalChunks-totalEmpty)/1024/1024));

}

2、脚本必须通过mongos router进行调用:

mongos> allChunkInfo("db.test_col")

3、 生成如下结果

sh.splitFind("db.test_col", {"_id":"jhxT2neuI5fB4o4KBIASK1"}) // shard-1    222 MB    7970

sh.splitFind("db.test_col", {"_id":"zrAESqSZjnpnMI23oh5JZD"}) // shard-2    226 MB    7988

sh.splitFind("db.test_col", {"_id":"SgkCkfSDrY789e9nD4crk9"}) // shard-1    218 MB    7986

sh.splitFind("db.test_col", {"_id":"X5MKEH4j32OhmAhY7LGPMm"}) // shard-1    238 MB    8338

...

***********Summary Chunk Information***********

Total Chunks: 5047

Total Jumbo Chunks: 120

Average Chunk Size (Mbytes): 19.29779934868946

Empty Chunks: 1107

Average Chunk Size (non-empty): 24.719795257064895

4、运行上一步骤的split命令 

备注:阿里云分片集群介绍

什么是MongoDB分片集群_云数据库 MongoDB 版(MongoDB)-阿里云帮助中心

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/811761.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL15 + PostGis + QGIS安装教程

目录 下载1、PostgreSQL安装1.1、环境变量配置 2、PostGIS安装2.1、安装插件 3、QGIS下载3.1、安装3.2、测试 下载 PostgreSQL15安装:下载地址 PostGIS安装:下载地址(倒数第二个) 1、PostgreSQL安装 下载安装包之后一直点下一步…

C++力扣Leetcode算法4--排序算法

目录 快速排序--递归 归并排序--递归 插入排序 冒泡排序 选择排序 215 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 347. 前 K 个高频元素 快速排序--递归 void quick_sort(vector<int> &nums, int l, int r) {if (l 1 > r) …

Python 版分布式消息队列 Kafka 实现图片数据传输

1、Kafka 介绍 在使用 Kafka 之前&#xff0c;通常需要先安装和配置 ZooKeeper。ZooKeeper 是 Kafka 的依赖项之一&#xff0c;它用于协调和管理 Kafka 集群的状态。 ZooKeeper 是一个开源的分布式协调服务&#xff0c;它提供了可靠的数据存储和协调机制&#xff0c;用于协调…

清远某国企IBM服务器Board故障上门维修

接到一台来自广东清远市清城区某水利大坝国企单位报修一台IBM System x3650 M4服务器无法开机的故障&#xff0c;分享给大家&#xff0c;同时也方便有需要的朋友能及时找到我们快速解决服务器问题。 故障服务器型号&#xff1a;IBM System x3650 M4 服务器使用单位&#xff1a;…

docker、ctr、crictl命令对比

命令dockerctr&#xff08;containerd&#xff09;crictl&#xff08;kubernetes&#xff09;查看运行的容器docker psctr task ls/ctr container lscrictl ps查看镜像docker imagesctr image lscrictl images查看容器日志docker logs无crictl logs查看容器数据信息docker insp…

厂区3D全景线上漫游体验突破现实时空阻碍

智慧园区&#xff0c;作为现代城市发展的重要引擎&#xff0c;其管理效率和安全监控的需求日益凸显。而720VR全景展示技术的引入&#xff0c;无疑为智慧园区的建设注入了新的活力。通过360全空间无死角的视觉展示&#xff0c;用户可以身临其境地感受园区的每一个角落&#xff0…

记账本|基于SSM的家庭记账本小程序设计与实现(源码+数据库+文档)

家庭记账本小程序目录 基于SSM的家庭记账本小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1、小程序端&#xff1a; 2、后台 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大…

【opencv】示例-imagelist_reader.cpp 读取YAML格式文件中的图片列表,并逐个显示这些图片的灰度图...

这段代码的功能是使用OpenCV库读取一个YAML或XML格式文件中的图片列表&#xff0c;并且逐个地在窗口中以灰度图像的形式显示这些图片。用户可以按任意键来查看下一张图片。程序提供了帮助信息输出&#xff0c;指导用户如何使用该程序。此外&#xff0c;它使用命令行参数解析器来…

8266 Ubuntu下 arduino开发

8266 NodeMCU arduino开发 直接用usb连接8266的usb接口即可,设备中会出现/dev/ttyUSB0, 需要将其权限设置下sudo usermod -a -G dialout $USER. logout后生效. 下载arduino IDE,做以下设置: file/preferences Additional boards manager URLS设置为http://arduino.esp8266.co…

NCCL集合通信算子DEMO及性能测试

NCCL集合通信算子DEMO及性能测试 一.复现代码 以下代码用于测试NCCL算子的性能及正确性 一.复现代码 tee ccl_benchmark.py <<-EOF import os import torch import argparse import torch.distributed as dist from torch.distributed import ReduceOp from datetime im…

(文章复现)考虑网络动态重构的分布式电源选址定容优化方法

参考文献&#xff1a; [1]朱俊澎,顾伟,张韩旦,等.考虑网络动态重构的分布式电源选址定容优化方法[J].电力系统自动化,2018,42(05):111-119. 1.摘要 以投资周期经济收益最高为目标&#xff0c;基于二阶锥规划提出了一种考虑网络动态重构的分布式电源选址定容优化方法。首先&am…

毅四捕Go设计模式笔记——责任链模式

责任链模式&#xff08;Chain of Responsibility Pattern&#xff09; 为了解决什么问题&#xff1f; 责任链模式的目的是为了将请求的发送者和接收者解耦。它允许多个处理器都有机会处理请求&#xff0c;将这些处理器连接成一条链&#xff0c;并沿着这条链传递请求&#xff…

Linux磁盘空间问题排查记录

问题 pip install时总提示OSError(28, ‘No space left on device’)或者ERROR: Could not install packages due to an OSError: [Errno 28] No space left on device 分析 很明显&#xff0c;磁盘空间不足。尝试了以下方法&#xff0c;没有解决问题&#xff1a; 清理pip缓…

给现有rabbitmq集群添加rabbitmq节点

现有的&#xff1a;10.2.59.216 rabbit-node1 10.2.59.217 rabbit-node2 新增 10.2.59.199 rabbit-node3 1、分别到官网下载erlang、rabbitmq安装包&#xff0c;我得版本跟现有集群保持一致。 erlang安装包&#xff1a;otp_src_22.0.tar.gz rabbitmq安装包&#xff1…

详解App Inventor 2 中的文件作用域(作用范围):App、程序包、缓存、兼容、私有、共享

本文内容来自中文网文档“文件管理器”组件部分&#xff0c;详细介绍了每一种文件作用域的特点及用法。 下面是每种作用域类型的简述&#xff1a; App [推荐] &#xff1a;Android 2.2及更高版本上文件将从应用程序特定存储中读取和写入&#xff0c;在 Android 早期版本上&…

STM32—DMA直接存储器访问详解

DMA——直接存储器访问 DMA&#xff1a;Data Memory Access, 直接存储器访问。 DMA和我们之前学过的串口、GPIO都是类似的&#xff0c;都是STM32中的一个外设。串口是用来发送通信数据的&#xff0c;而DMA则是用来把数据从一个地方搬到另一个地方&#xff0c;而且不占用CPU。…

Arthas排查工具

简介 | arthas (aliyun.com) 在线安装 #下载jar包 curl -O https://arthas.aliyun.com/arthas-boot.jar#启动会先检测虚拟机进程&#xff0c;如果没有启动失败(idea) java -jar arthas-boot.jar linux安装与window一样

利用SOCKS5代理和代理IP提升网络安全与匿名性

一、引言 随着网络技术的迅猛发展&#xff0c;数据安全和隐私保护已成为业界关注的热点。企业和个人用户越来越依赖于各种网络技术来保护敏感信息免受未授权访问。本文将探讨SOCKS5代理、代理IP以及HTTP协议在提升网络安全和匿名性方面的作用和实践应用。 二、基础技术概述 2.…

flask毕业设计选题管理系统python+django_96r19

本系统选择编程语言。Pymysql是封装了MySQL驱动的Python驱动一个能使Python连接到MySQL的库。Python语言官方规范访问数据库的统一接口规范(Python DB-API)&#xff0c;防止在使用不同数据库时&#xff0c;由于底层数据库技术不同造成接口程序紊乱的问题。通过本次系统设计可以…

【Spring高级】Spring Boot启动过程

目录 SpringApplication new 分析源码分析步骤演示primarySources和Sources应用类型webApplicationTypesetInitializers设置容器初始化器setListeners设置监听器主类推断 SpringApplication run 分析主要步骤步骤演示事件发布容器相关执行 runner准备EnvironmentEnvironmentPos…