我的MongoDB环境遇到问题 - 设置如下:
我的节点应用程序提供了一个处理用户注册的restify API(查看用户是否存在于基于他的邮件的集合中,如果没有,请插入他(注意 - 插入使用bcrypt来哈希密码,所以可能是有点慢))。它使用restify和Mongoose ORM。
第二个基准测试脚本(也在节点中编写,在同一台机器上运行)使用HTTP PUT访问此restify API。
我在基准测试中开始大约20-30个这样的请求(使用随机数据),只有部分API请求正确插入新用户。另一方面,MongoDB产生类似于以下的错误:
未授权执行命令{find:“users”,filter:{mail:“rroouksl@hddngrau.de”}}
未授权执行命令{insert:“users”,documents:[{...}],ordered:false,writeConcern:{w:1}}
其他一些用户插入完全正常。特别是在同时(1-5)的请求数量较少的情况下,不会出现问题。 Mongo不应该能够处理这些“低”数量的请求吗?这是一个问题,因为它在同一台机器上运行?我在Mongo中为这个项目创建的用户是否获得了足够的txns /秒?
祝你好运, Zahlii
答案 0 :(得分:0)
原来,mongo仍在使用" old"存储引擎而不是WiredTiger。由于我的查询包括更新记录,旧引擎执行基于集合的锁,这意味着错误完全基于读写锁。
我迁移到WiredTiger,它执行基于文档的锁定,从那时起,数据库处理许多没有这些错误的并行请求(虽然有时在重载下它们会再次出现 - 但这是mongo的一部分,我猜是NoSQL)
答案 1 :(得分:0)