mongodb count 慢_Node+Mongodb 架构常见性能问题总结

0fdf6bec37a654e12f84f34eceae9dc5.png

简介

目前的我们的一个项目,后端使用 node+mongodb+redis 搭建,已运行 2 年,目前日 pv 在 100W 左右。

配置:

两台阿里云 ECS (2 vCPU 4 GB ) 一个阿里云 mongodb。(4核8G,节点数,三节点)

此文由近两年来实际血泪经验,无教科书式说教。

常见现象1:Web 服务超时,node 服务内存占用高。Mongodb CPU ,IOPS 高

正常情况下单个 node 服务占用内存在 100-200M 左右,此时内存可能涨到500-600M以上,Mongodb CPU 超过90%。web 服务失去响应。

62235b65aca891bf9b87d9d4b899af07.png

问题原因:

node 每增加一个回调/promise 异步任务,都会创建 一个microtask到执行队列,由于太多的microtask等待处理完成,新的microtask 在任务队列的尾端,得不到处理,web QPS 也因此迅速下降,造成 web 服务内存占用高。这种情况一般是后端 Mongodb 处理不及时拖累 node 服务,这是最常见的性能问题。

调试方法:

登录 mongo 执行执行执行 db.currentOp(),查看是否有执行慢的的任务。如:

mgset-2286:PRIMARY> db.currentOp()
{
"inprog" : [
    {
        "desc" : "conn33170850",
        "threadId" : "47003141687040",
        "connectionId" : 33170850,
        "client" : "10.24.141.149:49804",
        "active" : true,
        "opid" : -1695682558,
        "secs_running" : 0,
        "micr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值