带有[email protected]的MacOS(使用brew安装)
TLDR:MongoDB仅作为一个进程运行,似乎没有利用其他7个可用的CPU内核。
我正在使用PM2运行一个简单的NodeJS应用程序,利用了我所有的8个CPU内核。
[使用Apache Benchmark,我尝试对应用程序进行压力测试以检索数据。我要访问的端点从MongoDB数据库中检索数据。 (仅读取,不执行写入操作)。
在压力测试期间,我得到了以下结果:
为什么MongoDB仅使用1个进程/核心?
我可以通过将其配置为使用多个进程/核心来提高性能吗?
[MongoDB(作为any database)与单个进程配合使用,以确保一致性,它使用锁定和其他concurrency control措施来防止多个客户端同时修改同一数据。
在某些情况下,应用程序与数据库之间的连接数量可能使服务器处理请求的能力不堪重负。 serverStatus文档中的以下字段可以提供洞察力:
- connections是以下两个字段的容器:
connections.current
当前连接到数据库实例的客户端总数。connections.available
可用于新客户端的未使用的连接总数。如果有大量并发应用程序请求,则数据库可能难以满足需求。如果是这种情况,那么您将需要增加部署的容量。
对于大量读取的应用程序,增加副本集的大小并将读取操作分配给辅助成员。
对于繁重的应用程序,请部署分片并将一个或多个分片添加到分片群集中,以在mongod实例之间分配负载。
https://docs.mongodb.com/manual/administration/analyzing-mongodb-performance/#number-of-connections