ServerStatus

《万亿级数据库MongoDB集群性能数十倍提升优化实践》核心17问详细解答

好久不见. 提交于 2021-02-20 10:33:09
《万亿级数据库MongoDB集群性能数十倍提升优化实践》核心17问详细解答 说明: 为了更好的理解背景,请提前阅读oschina分享的 《万亿级数据库MongoDB集群性能数十倍提升及机房多活容灾实践》 一文。 本文是2020年深圳Qcon全球软件开发大会 《专题:现代数据架构》 专场 、 dbaplus专场:万亿级数据库MongoDB集群性能优化实践 、mongodb2020年终盛会 分享 后,获得一致好评。本文收集了会后众多mongodb用户提的比较频繁的17个问题,并对每个问题进行了详细解答,一并整理到本文中。 分享内容回顾如下: MongoDB在OPPO互联网推广经验分享-如何把一个淘汰边缘的数据库逐步变为公司主流数据库 谈谈当前国内对MongoDB误解(丢数据、不安全、难维护)? MongoDB跨机房多活方案-实现成本、性能、一致性"三丰收" MongoDB线程模型瓶颈及其优化方法 并行迁移:MongoDB内核扩容迁移速率数倍/数十倍提升优化实践 百万级高并发读写/千亿级数据量MongoDB集群性能数倍提升优化实践 万亿级数据量MongoDB集群性能数十倍提升优化实践 磁盘80%节省-记某服务接口千亿级数据迁移MongoDB,近百台SSD服务器节省原理 关于作者 前滴滴出行技术专家,现任OPPO文档数据库mongodb负责人

HCNA网络技术实验指南-第一章eNSP及VRP基础操作

女生的网名这么多〃 提交于 2021-02-01 16:08:28
1、安装eNSP   eNSP是一款网络仿真工具平台。   之前的eNSP从华为官网下载完毕后就可以直接安装使用,最新版的eNSP安装需要提前安装好WinPcap、Wireshark、Virtualbox 这三个程序,下面是这三个程序的下载地址。   安装最新winpcap   https://www.winpcap.org/   安装最新wireshark   https://www.wireshark.org/download.html   安装最新Virtualbox   https://www.virtualbox.org/wiki/Downloads   eNSP从华为官网下载后,一直默认下一步安装完毕。启动后界面是这样的   注:eNSP打开后,发现里面所有的设备点击启动都提示40错误,按照帮助文档里面的方法和百度的方法都不能解决,最后在华为官网翻看eNSP安装教程,找你原因所在,以上的三个依赖软件不是下载最新版就行,而是要下载与eNSP对应的版本。以下是华为官网文档说明。   至此,eNSP安装完毕。 2、熟悉常用的IP相关命令   模拟简单的企业网络场景,交换机S1连接客服部PC-1,S2连接市场部PC-2,路由器R1连接S1和S2两台交换机。 实验拓扑: 用到的命令 system-view sysname R1 interface GigabitEthernet

用最少人力玩转万亿级数据,我用的就是MongoDB!

。_饼干妹妹 提交于 2021-01-28 12:40:07
本文根据杨亚洲老师在〖deeplus直播第258期〗线上分享演讲内容整理而成。 (文末有获取本期PPT&回放的方式,不要错过) 杨亚洲 OPPO MongoDB负责人 负责OPPO数万亿级数据量文档数据库MongoDB内核研发、性能优化及运维工作,一直专注于分布式缓存、高性能服务端、数据库、中间件等相关研发。 本文主要 分享内容如下: MongoDB在OPPO互联网推广经验分享-如何把一个淘汰边缘的数据库逐步变为公司主流数据库; 谈谈当前国内对MongoDB误解(丢数据、不安全、难维护)? MongoDB跨机房多活方案-实现成本、性能、一致性"三丰收"; MongoDB线程模型瓶颈及其优化方法; 并行迁移:MongoDB内核扩容迁移速率数倍/数十倍提升优化实践; 百万级高并发读写/千亿级数据量MongoDB集群性能数倍提升优化实践; 万亿级数据量MongoDB集群性能数十倍提升优化实践; 磁盘800%节省-记某服务接口千亿级数据迁移MongoDB,近百台SSD服务器节省原理; 展望:借助MongoDB完善的分布式、高可用、机房多活等功能,如何实现NoSQL、NewSQL融合; 其他-那些年我们踩过的坑。 一、如何把MongoDB从淘汰边缘变为公司主流数据库? 背景 入职前多个大数据量业务使用MongoDB,使用中经常超时抖动; 多个核心业务忍受不了抖动的痛苦,准备迁移回MySQL;

Java多线程优化

风流意气都作罢 提交于 2021-01-13 07:26:38
----以下文章来源于51CTO技术栈 ,作者 崔皓 今天,我们从 Java 内部锁优化,代码中的锁优化,以及线程池优化几个方面展开讨论。 Java 内部锁优化 当使用 Java 多线程访问共享资源的时候,会出现竞态的现象。即随着时间的变化,多线程“写”共享资源的最终结果会有所不同。 为了解决这个问题,让多线程“写”资源的时候有先后顺序,引入了锁的概念。每次一个线程只能持有一个锁进行写操作,其他的线程等待该线程释放锁以后才能进行后续操作。 从这个角度来看,锁的使用在 Java 多线程编程中是相当重要的,那么是如何对锁进行优化? 众所周知,Java 的锁分为两种: 一种是内部锁,它用 Synchronized 关键字来修饰,由 JVM 负责管理,并且不会出现锁泄漏的情况。 另外一种是显示锁。 这里重点讨论的是内部锁优化。内部锁的优化方式由 Java 内部机制完成,虽然不需要程序员直接参与,但了解它对理解多线程优化原理有很大帮助。 这部分的优化主要包括四部分: 锁消除 锁粗化 偏向锁 适应锁 锁消除(Lock Elision), JIT 编译器对内部锁的优化。在介绍其原理之前先说说,逃逸和逃逸分析。 逃逸是指在方法之内创建的对象,除了在方法体之内被引用之外,还在方法体之外被其他变量引用。 也就是,在方法体之外引用方法内的对象。在方法执行完毕之后,方法中创建的对象应该被 GC 回收

mysql源码---核心类 (1)线程类

拟墨画扇 提交于 2021-01-11 14:03:23
线程是mysql一个很重要的概念。线程用来处理来自客户端的连接,线程和连接是1:1的关。线程和THD对象也是1:1对应的关系,有些线程会被设置为优先,而有些线程没有优先级,而线程的优先级设置在sql/mysql_priv.h #define INTERRUPT_PRIOR -2 #define CONNECT_PRIOR -1 #define WAIT_PRIOR 0 #define QUERY_PRIOR 2 (THD是mysql线程描述符类) 线程初始化工作: void THD::init(void) { pthread_mutex_lock(&LOCK_global_system_variables); plugin_thdvar_init(this); variables.time_format= date_time_format_copy((THD*) 0, variables.time_format); variables.date_format= date_time_format_copy((THD*) 0, variables.date_format); variables.datetime_format= date_time_format_copy((THD*) 0, variables.datetime_format); /* variables= global

apache-优化

你。 提交于 2020-12-31 06:40:33
优化 性能优化 指定mpm模式(编译时) httpd -V show compile settings 及 Server MPM -l Compiled in modules ,是否有worker.c 否则为prework apache 计算内存消耗 在压力测试时,找到httpd进程,查看一个进程使用了多少的内存,然后看看总的进程 Apache内存使用量可以使用下面命令: ps -U apache u|awk '{S+=$6} END {print S}' 优化Apache(httpd) KeepAlive 是否允许持续连接 MaxKeepAliveRequests 允许的持续连接的最大数 KeepAliveTimeout 持续连接在没有请求多少秒后切断 StartServers 最初启动时启动多少个服务器进程 MinSpareServers 空闲服务器进程的最小数 MaxSpareServers 空闲服务器进程的最大数 MaxRequestsPerChild 每个子进程处理的最大请求数 VPS优化Apache完全设置 一、削减模块以及计算调整可供APACHE使用的内存 影响WEB服务器最大的因素即为内存,所以我们把它放在最前面 在 默认状态下,Apache会分配最大256个并发客户端连接,或者256个进程(每一个都对应一个请求)。按照这种设置,一个流量巨大的网站会在顷刻间崩 溃

mongodb内核源码实现、性能调优、最佳运维实践系列-command命令处理模块源码实现三

梦想的初衷 提交于 2020-12-09 00:20:52
关于作者 前滴滴出行技术专家,现任OPPO文档数据库mongodb负责人,负责oppo千万级峰值TPS/十万亿级数据量文档数据库mongodb内核研发及运维工作,一直专注于分布式缓存、高性能服务端、数据库、中间件等相关研发。后续持续分享《MongoDB内核源码设计、性能优化、最佳运维实践》,Github账号地址: https://github.com/y123456yz 背景 <<transport_layer网络传输层模块源码实现>>中分享了mongodb内核底层网络IO处理相关实现,包括套接字初始化、一个完整mongodb报文的读取、获取到DB数据发送给客户端等。Mongodb支持多种增、删、改、查、聚合处理、cluster处理等操作,每个操作在内核实现中对应一个command,每个command有不同的功能,mongodb内核如何进行command源码处理将是本文分析的重点 此外,mongodb提供了mongostat工具来监控当前集群的各种操作统计。Mongostat监控统计如下图所示: 其中,insert、delete、update、query这四项统计比较好理解,分别对应增、删、改、查。但是,comand、getmore不是很好理解,command代表什么统计?getMore代表什么统计?,这两项相对比较难理解。 此外,通过本文字分析,我们将搞明白这六项统计的具体含义

NO.B.0007——zabbix-agent的被动、主动模式、对比、item的调度方式

筅森魡賤 提交于 2020-11-21 14:36:16
一、概述: 二、被动模式 1、创建一台主机: 2、为主机添加Items: 注:net.tcp.service支持以下类型的协议: FTP HTTP、HTTPS、IMAP、LDAP、NNTP、POP、SMTP、SSH Telnet、NTP 3、回到ZABBIX-Agent客户端修改配置文件: [root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf Server=192.168.1.59,192.168.1.103 // 你的服务器地址,zabbix-server // 若你的服务器有多个地址,可以用逗号分开。 Hostname=Another host // 你的客户端名称 # ServerActive= 127.0.0.1 // 你的服务器地址zabbix-server // Agent操作常用命令: [root@localhost ~]# sed -ri 's/^Server=(.*)/Server=192.168.1.1/' /etc/zabbix/zabbix_agentd.conf [root@localhost ~]# sed -ri 's/^ServerActive=(.*)/ServerActive=192.168.1.1/' /etc/zabbix/zabbix_agentd.conf [root

常用的mysql数据库的命令 记录笔记

我们两清 提交于 2020-11-06 09:38:34
# 数据库常用命令 使用命令操作(开启,关闭,查看状态)数据库: 开启: sudo /usr/local/mysql/support-files/mysql.server start 查看状态: sudo /usr/local/mysql/support-files/mysql.server status 关闭: sudo /usr/local/mysql/support-files/mysql.server stop 创建数据库: 使用具体用户登录之后: create database 数据库名称; 假如数据库不存在,则创建数据库 create database if not exists 数据库名称; 用户没有登录,直接使用 mysqladmin 创建数据库 mysqladmin -u root -p create RUNOOB 显示所有的数据库: show databases; 删除数据库: 使用具体用户登录之后: drop database 数据库名称; 用户没有登录,直接使用 mysqladmin 删除数据库 mysqladmin -u root -p drop 数据库名称 查询当前正在使用的数据库: select database(); 创建表: create table if not exists 表名( 字段名称1 字段类型1, 字段名称2 字段类型2, ...

聊聊kingbus的binlog_server_handler.go

↘锁芯ラ 提交于 2020-08-11 01:17:33
序 本文主要研究一下kingbus的binlog_server_handler.go StartBinlogServer kingbus/api/binlog_server_handler.go //StartBinlogServer implements start a binlog server func (h *BinlogServerHandler) StartBinlogServer(echoCtx echo.Context) error { h.l.Lock() defer h.l.Unlock() var args config.BinlogServerConfig var err error defer func() { if err != nil { log.Log.Errorf("StartBinlogServer error,err: %s", err) echoCtx.JSON(http.StatusInternalServerError, utils.NewResp().SetError(err.Error())) } }() err = echoCtx.Bind(&args) if err != nil { return err } kingbusIP := h.svr.GetIP() //check args err = args.Check