为首次部署MongoDB做好准备:容量计划和监控

如果你已经完成了自己新的MongoDB应用程序的开发,并且现在正准备将它部 署进产品中,那么你和你的运营团队需要讨论一些关键的问题:

最佳部署实践是什么?

为了确保应用程序满足它所必须的服务层次我们需要监控哪些关键指标?

如何能够确定添加分片的时机?

有哪些工具可以对数据库进行备份和恢复?

怎样才能安全地访问所有新的实时大数据?

本文介绍了硬件选择、扩展、HA和监控。在查看详细信息之前,首先让我们处 理一个最常见的问题:

部署MongoDB和部署RDBMS有什么不同?

你会发现MongoDB作为一个文档数据库,它和你已经熟悉的关系型数据库分享 了很多同样的概念、操作、策略和过程。监控、索引、调整和备份等内容的流程 和最佳实践可以应用到MongoDB。同时如果你想要开始自己的培训,那么可以从 MongoDB大学中获取到来自于开发者和DBA的免费在线课程。

系统性能和容量规划是两个重要的主题,任何部署都需要处理这两个问题,无 论是RDBMS还是NoSQL数据库都是如此。作为规划的一部分我们应该对数据卷 (volume)、系统负载、性能(吞吐量及延迟时间)和容量利用建立基线。这些 基线应该反映你对数据库在产品环境中执行的工作负载的期望,它们应该随着用 户数、应用程序功能、性能SLA或者其他因素的变化定期地调整。

基线将帮助你理解系统哪些时候是按照设计运行的,哪些时候可能会影响用户 体验质量或者其他决定性系统因素的问题开始浮现。

下面将会讨论关键的部署要素,包括硬件、扩展和HA,同时还会讨论为了维持 最佳的系统性能你应该监控哪些内容。

清楚自己的工作集

在为部署MongoDB优化硬件预算的时候,RAM应该是或者接近于列表的第一位。

为了实现低延迟的数据库操作MongoDB中广泛使用了RAM。在MongoDB中,所有 的数据都是通过内存映射文件读取和操作的。从内存中读取数据是使用纳秒来度 量的,而从磁盘中读取数据则是使用毫秒度量的,所以从内存中读取数据几乎比 从磁盘中读取要快了十万倍。

在正常操作期间最频繁访问的数据和索引的集合称为工作集,在理想的情况下 它们应该在RAM中。工作集可能是整个数据库的一小部分,例如最近的事件所关联 的应用程序数据或者最常访问的热门产品。

MongoDB试图访问数据时发生的页面错误并不会被加载到RAM中。如果有空闲内 存,那么操作系统将定位到磁盘上的页面并将它们直接加载到内存中。但是如果 没有空闲内存,那么操作系统必须将内存中的一个页面写入磁盘,然后将被请求 的页面读取到内存中。这个流程比访问已经存在于内存中的数据要慢。

有些操作可能会在不经意间从内存中清除大量的工作集,这样会对性能产生严 重影响。例如,对于一个浏览数据库中所有文档的查询而言,如果数据库比服务 器上的RAM大,那么将会导致文档被读入内存而工作集被写出到磁盘。在项目的模 式设计阶段为自己的查询定义合适的索引将会极大地降低这种风险发生的可能性 。MongoDB说明操作能够为查询计划和索引的使用提供信息。

MongoDB服务状态命令中包含了一个有用的输出:工作集文档,它提供了一个 MongoDB实例工作集的估算大小。运营团队可以按照给定的时间跟踪实例访问的页 面数,包括工作集中最旧的文档到最新的文档之间的运行时间。通过跟踪这些指 标我们能够发现什么时候工作集会接近现在的RAM限制从而积极地采取行动确保系 统是可扩展的。

MongoDB管理服务和mongostat能够帮助用户监控内存的使用情况,下面我们将 会对此进行详细地讨论。

存储和磁盘I/O

MongoDB不需要共享存储(例如存储区域网络)。MongoDB能够使用本地附加的 存储和固态硬盘(SSD)。

MongoDB中的大部分磁盘访问模式并没有顺序属性,这样做的结果便是客户可 以通过使用SSD获得巨大的性能收益。我们已经观察到使用SATA SSD和PCI获得的 良好结果和强大的性能。商业SATA旋转驱动器可以媲美成本更高的旋转驱动器, 这得益于MongoDB的非顺序访问模式:应该更有效地使用预算将其用于更多的RAM 或者SSD上,而不是更多地用于昂贵的旋转驱动器上。

在数据文件受益于SSD的同时,MongoDB的日记文件由于其自身的高顺序的写属 性成为了快速常规磁盘的一个很好的候选。

大多数MongoDB部署应该使用RAID-10。RAID-5和RAID-6没有提供足够的性能。 RAID-0提供了很好的写性能,但是读性能有限,容错能力也不足。部署的MongoDB 可以通过副本集(下面将会讨论)提供很强的数据可用性,同时用户应该考虑使 用RAID和其他因素满足想要的SLA可用性。

虽然我们应该设计MongoDB系统让它的工作集适合于内存,但是磁盘I/O依然是 一个关键的性能考虑。MongoDB会定期地将写操作刷新到磁盘并提交到日记,所以 在写负载较重的时候基础的磁盘子系统可能会变得不堪重负。iostat命令可以用 于显示高磁盘利用率和过多的写队列。

CPU选择——速度还是内核?

MongoDB的性能通常不会绑定到CPU上。因为MongoDB很少会遇需要利用大量内 核的工作负载,比起时钟速度较慢的多核服务器最好的选择是有更快的时钟速度 。

无论是什么系统,测量CPU的利用率都是非常重要的。如果观察到CPU的利用率 很高但是并没有出现磁盘饱和或者页面错误这样的其他问题,那么系统中可能会 存在不寻常的问题。例如,一个存在无限循环的MapReduce工作或者一个没有建立 良好索引就对工作集中的大量文档进行排序和过滤的查询都可能会导致CPU利用率 的飙升,但是它们却不会引发磁盘系统问题或者页面错误。用于监控CPU利用率的 工具将在下面介绍。

扩展数据库——何时扩展和如何扩展?

MongoDB通过一种称为Sharding的技术提供了水平扩展能力。Sharding能够在 多个物理分区(称为片)之间分发数据。Sharding可以让MongoDB的部署解决单个 服务器的硬件限制而不需要增加应用程序的复杂性,解决的硬件限制包括RAM和磁 盘I/O的瓶颈。

时间: 2024-08-02 13:06:06

为首次部署MongoDB做好准备:容量计划和监控的相关文章

生态聚伙伴 方案联价值 华为首次发布企业业务解决方案伙伴计划

在上海举行的HUAWEI CONNECT 2016 全联接大会上期间,在企业业务合作伙伴峰会上,华为首次正式发布企业业务解决方案伙伴计划(Huawei Enterprise Solution Partner Program).基于华为领先的信息和通信技术(ICT)基础架构,此项计划旨在大力发展与华为打造联合解决方案的合作伙伴,共同服务全球客户. 践行华为面向企业市场的行动纲领--打造业务驱动的ICT基础架构(BDII),华为企业BG将向该计划中的合作伙伴开放技术接口,为其提供全球技术专家及实验室

王通:如何做好创业执行计划

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 有不少这样的创业者: 1.克亚的.懂懂的.紫杰的.我的教程都看过了,但是就是无从下手,每天不断的寻找更多的网络创业教程看...... 2.暴利产品找到了不少,空间域名也购买了,广告账户也开通了,不过到了这一步,之后就不知道该怎么做了...... 通过与非常多的网络创业者接触,我发现绝大部分创业者还不成功,都不是能力问题,而是心理问题,总是突破

苹果交管局反馈信曝光 首次官方披露自动驾驶相关计划

近日,美国国家公路交通安全管理局(National Highway Transportation Safety Authority,下称NHTSA)公布了苹果公司提交的关于联邦自动驾驶汽车政策的反馈信.   这封信意味着,这一始终对自己的自动驾驶计划讳莫如深的科技巨头,首次官方确认了其在自动驾驶汽车上正有所动作.   信中,苹果公司称其"在机器学习和自动化方面投资巨大",已经进军自动系统,尤其是自动交通系统.苹果还提到,"我们想要和NHTSA合作,帮助工业界定义最好的实践政策

做好项目沟通计划

回想一下你所经历的项目,有没有出现过以下这样的情况:客户在检查项目阶段成果时,指出曾经要求的某个产品特性没有包含在其中,并且抱怨说早就以口头的方式反映给了项目组的成员,糟糕的是作为项目经理的你却一无所知,而那位成员解释说把这点忘记了;或者,你手下的程序员在设计评审时描述了他所负责的模块架构,然而软件开发出来后,你发现这和你所理解的结构大相径庭-- 可能你遇到的情况比上面谈到的还要复杂.问题到底出在哪儿呢?其实很简单,就两个字--沟通.以上这些问题都是由于沟通引起的,沟通途径不对导致信息没有到达目

如何做好SEM推广计划方案

sem是付费 竞价推广,按点击收费.除了sem外,seo是网站的基础,必须做好站内规划. 小脑袋 竞价助手 今天给您详细说明一下. &http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 如果你说的如何写 推广方案,那就涉及到推广目标人群,推广计划和目标(每天带来 多少点击,多少转化).其中转化有注册转化,咨询转化,购买转化等等,与网站相关.   做sem之前所需要的分析和准备工作:   1.分析所推广产品或服务所针对的

跨平台运行 Rafy 首次部署记录

一直想在 Linux 上使用 MONO 试试运行 Rafy,最近因为业务需要,总算是真正地试验了一次.下面是本次部署记录的一些要点.   Linux 这次部署,我是和两位同事一起来试验的.由于我们对 Linux 都不太熟悉(多年前曾经用过很少一段时间的 RedHat,那些命令现在也早已忘记了,哈.),所以我们三个分别测试了三个不同的镜像,最终选定了 OpenSUSE 的一个镜像.(其实,我下载了一个Ubuntu,才 800M,安装后老是有问题,不得不放弃,悲剧--) 相对于 Windows 来说

如何做好基础设施容量规划?

遵循如下指南来扩展数据中心可用性,可以避免空间浪费,甚至还可以避免容量吃紧的问题. 这几乎是个不可能完成的任务,但依旧需要有人去做:预测未来的数据中心空间.电力和冷却需求.这个任务十分艰巨,而云计算的出现让基础设施规划变得更加困难. 数据中心的建造十分昂贵,而整治.升级或扩展都是破坏性的,存有潜在危险. 空间始终是非常难得的资源,所以不要索取比实际使用还多的空间.这同样适用于供电和冷却:相关电力设施也需要空间--有时候会比计算面积还要更多--而且也是扩张中最昂贵的部分.如果预估需要的能源比实际所

RHCSA 系列(十): Yum 包管理、Cron 自动任务计划和监控系统日志

在这篇文章中,我们将回顾如何在 RHEL7 中安装,更新和删除软件包.我们还将介绍如何使用 cron 进行任务自动化,并完成如何查找和监控系统日志文件,以及为什么这些技能是系统管理员必备技能. RHCSA: Yum包管理.任务计划和系统监控 – Part 10 使用yum 管理包 要安装一个包以及所有尚未安装的依赖包,您可以使用: # yum -y install package_name(s) package_name(s) 需要是至少一个真实的软件包名 例如,安装 httpd 和 mloca

日本计划在钓鱼岛附近部署军力防范中国

图片说明:与那国岛位于中国台湾岛东部120公里处,距离北部的中国钓鱼岛(日称"尖阁群岛")约170公里. 法新社7月2日援引日本媒体的报道说,日本防卫省正在考虑向位于东海的争议岛屿附近部署自卫队,并计划将这一部署纳入到将于年底修订的防卫大纲中. 日本防卫省一名发言人证实,日本确实在考虑向与那国岛部署陆上自卫队.他说:"我们正在研究(这一部署),以便在计划于年底修订的防卫大纲中将其包括在内."日本防卫省官员称,沿着位于日本九州岛南端和中国台湾岛之间的岛链部署军事力量是