【问题标题】:mongodb strange logfile entriesmongodb奇怪的日志文件条目
【发布时间】:2014-03-28 08:27:10
【问题描述】:

我在 Ubuntu 12.04.1 上运行 mongodb server 2.4.5。我的应用程序通过 Morphia 层 (0.104) 和 mongo-java-driver (2.12-rc2) 写入数据库。事情很好。但是在 /var/log/mongodb/mongodb.log 中有如下条目:

3 月 28 日星期五 07:45:12.614 [conn3621] 更新 messdatenDB.meterdata 查询:{ _id:"53351a789932d0c43be306c3"} 更新:{_id:"53351a789932d0c43be306c3",数据:1395910012296,0000000""SGHType:4" ", deviceID: "DC006487", mandantID: "520dee1299322f8346c57fd6", value: 0.7000000000000001, unit: "V", version: 1 } idhack:1 nupdated:1 upsert:1 keyUpdates:0 locks(micros) w:39 318ms F

我只为这个 db/collection 获取这些条目。有时每隔几分钟,有时间隔几个小时。

“messdatenDB.meterdata”集合定期被写入新数据对象 - 永远不会像日志文件所说的那样进行更新。这是否意味着创建了双ID?谁能给我一个提示,日志文件条目可能会告诉我什么?感谢您的任何建议!

【问题讨论】:

  • James 在下面的回答是关于慢查询位的正确答案。至于为什么您在更新中看到 _id,我们必须看到一些代码。
  • OK 代码很简单:MeterDataEntity mvalue = new MeterDataEntity(); ... fill mvalue ... EntityDAO<MeterDataEntity> dao = MongoDBServer.getInstance().getDaoFactory().map(MeterDataEntity.class, null); dao.save(mvalue); MeterDataEntity 是一个 POJO,带有 morphia 注释和类型的唯一 id 对象 IDEntityDAO 派生自 morphia 类的 BasicDAO

标签: mongodb morphia


【解决方案1】:

当操作花费的时间超过您的slowMS 阈值(默认为 100 毫秒)时,MongoDB 将向日志文件写入一个条目。在这种情况下,您的操作需要 318 毫秒。因此,您看到这一点的原因实际上只是由于此更新完成所需的时间。您可以调整此阈值,并可选择通过database profiler 将慢速操作记录到分析集合中。

至于 _id,奇怪的是它被包含在 update 子句中。 _id 根据定义是不可变的,不能更改。在这种情况下,更新尝试将 _id 设置为其现有值并导致无操作。如果更新尝试更改 _id 的值,它将失败。

【讨论】:

  • 感谢您的回答!是的,这确实也让我感到惊讶:底层 morphia 必须在这里做一些技巧来生成包含“id”字段的更新查询。因为我总是放入新的收藏品实例,这是肯定的。这也可能是操作相对缓慢的原因吗?至于现在,我不会更改 slowMS 参数,但会尝试修改插入操作。我会发布任何更改。
  • 使用 _id 作为查询的 upsert 不应该比插入慢很多。看起来最新的 Morphia 版本是 0.107,可能值得升级以查看 _id 行为是否发生变化。要对性能进行故障排除,第一步是设置 MMS (mms.mongodb.com)(如果您尚未设置)。提供的图表可以提供瓶颈所在位置的线索。
  • 你在哪里找到 0.107 版本的 Morphia?我从 [link]central.maven.org/maven2/com/google/code/morphia/morphia 下载但最新版本仍然是 0.104。感谢发帖。
  • 从 0.105 开始,它移到了 org.mongodb.morphia 下。详细信息在邮件列表和 github 页面 (github.com/mongodb/morphia)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多