带节点的Mongodb在Docker

时间:2016-09-01 13:30:55

标签: node.js mongodb performance rocket.chat

您好我已经在ubuntu Aws微实例上安装了Rocket.chat,它运行了Nginx,MongoDB和节点,其中MongoDB使用docker image mongo:3.0运行 它在安装当天运行顺利,但经过一段时间服务器变慢了,我在服务器内用top命令检查。 MongoDB使用大约70的cpu%。第二天它超过90%闪烁。

我重新安装了服务器上的所有内容,但它又一样,没有运气。

以下是top cmd的屏幕截图 如果需要任何其他统计数据,请告知我们。 enter image description here

我如何检查这里的主要问题,如何对其进行优化以使其正常工作。

谢谢

1 个答案:

答案 0 :(得分:0)

我知道为什么会出现这个问题。我开始用Meteor实现我的自定义聊天平台。 因此问题的原因是用户对象中的services.resume.loginTokens 我们正在尝试在自定义本机android应用程序上实现火箭聊天方法/ api。 每当应用程序从android应用程序调用login方法时,它就会添加一个新的登录令牌而不删除以前的登录令牌(对于多系统登录)

因此,如果您使用某些日期检查删除前一个,则不会为用户对象创建开销。

Accounts.registerLoginHandler (loginRequest) ->

  # ... Do whatever you need to do to authenticate the user

  stampedToken = Accounts._generateStampedLoginToken();
  Meteor.users.update userId,
    $push: {'services.resume.loginTokens': stampedToken}

  # Delete old resume tokens so they don't clog up the db
  cutoff = +(new Date) - (24*60*60)*1000
  Meteor.users.update userId, {
    $pull:
      'services.resume.loginTokens':
        when: {$lt: cutoff}
  },
  {multi : true}

  return {
    id: userId,
    token: stampedToken.token
  }

我从这里得到了这个解决方案question