首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB只使用一个线程

MongoDB只使用一个线程
EN

Stack Overflow用户
提问于 2020-02-22 18:37:43
回答 1查看 1.3K关注 0票数 0

带有mongodb的MacOS -community@4.2(使用brew安装)

TLDR: MongoDB只是作为一个进程运行,似乎没有利用其他7个可用的CPU核心。

我正在用NodeJS运行一个简单的PM2应用程序,它使用了我所有的8个CPU核心。

使用Apache基准测试,我尝试对应用程序进行数据检索的压力测试。我碰到的端点从我的MongoDB数据库中检索数据。(只进行读取,不执行写入操作)。

在压力测试中,我得到了以下结果:

  1. 有8个活动的NodeJS进程
  2. 只有一个活动的MongoDB进程
  3. CPU的使用表明MongoDB是瓶颈。如何确保MongoDB利用更多的核心?

从顶部截图:

为什么MongoDB只使用一个进程/核心?

我可以通过配置它来使用多个进程/核心来提高性能吗?

一些附加信息,serverStatus()在压力测试期间运行:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-23 12:08:46

MongoDB ( 任何数据库)与单个进程一起工作以确保的一致性,它使用锁定和其他并发控制措施来防止多个客户端同时修改相同的数据。

MongoDB性能

在某些情况下,应用程序和数据库之间的连接数量会超过服务器处理请求的能力。serverStatus文档中的下列字段可以提供洞察力:

  • connections是以下两个字段的容器:
    • connections.current连接到数据库实例的当前客户端总数。
    • connections.available可供新客户端使用的未使用连接总数。

如果存在大量并发应用程序请求,则数据库可能难以满足需求。如果是这样的话,那么您将需要增加部署的能力。

对于读取量大的应用程序,会增加副本集的大小,并将读取操作分发给辅助成员

对于编写量大的应用程序,部署切分并将一个或多个碎片添加到分片集群中,以便在单神实例之间分配负载。

https://docs.mongodb.com/manual/administration/analyzing-mongodb-performance/#number-of-connections

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60355479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档