mongo 和应用服务器 cpu

mongo 和应用服务器 cpu

开始: 我们正在使用 uwsgi,我决定切换我们的配置以使用更多的工作程序/进程。

为什么:我们最近看到了流量的增加,在我使用 apache 基准测试时,具有更多工作器和进程的新配置表现得更好(更快,丢弃的请求明显更少)。

发生了什么: 将配置更改推送到我们的应用服务器后,我们看到应用服务器 CPU 立即飙升(这并不奇怪),并且我们的 mongodb 服务器 CPU 也出现了同样巨大的增长。

有问题的行为: 为什么当读取和写入与应用程序配置更改之前完全相同时,mongodb cpu 或 mongo 服务器上的任何其他东西都会发生改变?

更多细节:

  • 我们将所有内容托管在 Amazon AWS 上
  • 我们使用 Mongo 副本集
  • 辅助 Mongo 服务器受到的影响更大(以及从其读取数据的应用服务器)
  • Mongo 版本 2.2

编辑: 我还注意到,在新的配置时间段内,mongo 服务器上的连接数量大幅增加(3 倍),更多的工作者 = 更多的连接?

答案1

所以你问的更多工作者意味着更多连接,这是真的。我不确定你是否使用 mongos,但脚本将在等待获得更多工作时生成与 mongo 的连接。

现在关于你的问题,为什么当你什么都不做的时候,CPU 负载会越来越大。但是增加了更多的工作线程。我不确定你是否在同一个盒子上运行 mongo 和工作线程,但可能发生的情况是 Linux 内核对进程进行安全保护的开销。它必须唤醒它们让它们运行,或者看看它们是否需要运行然后切换。这不是免费的,但也不是疯狂的成本。

相关内容