【发布时间】:2016-04-28 14:31:03
【问题描述】:
我们在 CentOS 服务器上运行 Context Broker,但它不断因某些更新查询而崩溃。我们尝试了 0.26 版本和最新的 1.0.0-1 但结果是一样的,我们也尝试在 3.0.6 和 3.0.7 之间更改 mongoDB 版本但没有运气。日志并没有给我们太多的信息,所以这就是我们在 SO 中询问的原因。
我们正在做的是发送一个大小约为 1MB 的实体的更新,该更新是通过 nginx 从 http 调用路由进来的。上下文代理崩溃(请参阅下面的日志),但 mongodb 和其他服务继续正常运行。
日志文件:/var/log/contextBroker/contextBroker.log
terminate called after throwing an instance of 'mongo::MsgAssertionException'
what(): EOO Before end of object
日志文件:/var/log/messages
Apr 28 07:15:50 gl abrt[11457]: Saved core dump of pid 11426 (/usr/bin/contextBroker) to /var/spool/abrt/ccpp-2016-04-28-07:15:49-11426 (63606784 bytes)
Apr 28 07:15:50 gl abrtd: Directory 'ccpp-2016-04-28-07:15:49-11426' creation detected
Apr 28 07:15:50 gl abrtd: Package 'contextBroker' isn't signed with proper key
Apr 28 07:15:50 gl abrtd: 'post-create' on '/var/spool/abrt/ccpp-2016-04-28-07:15:49-11426' exited with 1
Apr 28 07:15:50 gl abrtd: Deleting problem directory '/var/spool/abrt/ccpp-2016-04-28-07:15:49-11426'
contextBroker 在详细模式下运行时的输出:
INFO@14:05:27 logMsg.h[1792]: Starting transaction from 127.0.0.1:51245/v1/updateContext
INFO@14:05:27 connectionOperations.cpp[78]: Database Operation Successful (query: { id.id: "8a55c32500dfad.....06be56709b75b31c1f9beb7d2", id.type: "House", _id.servicePath: /^\/$/ })
terminate called after throwing an instance of 'mongo::MsgAssertionException'
what(): BSONElement: bad type 100
关于可能导致此问题的原因或我们应该继续寻找的地方有什么想法吗?
【问题讨论】:
-
如果我们可以查看您正在使用的 updateContext 请求负载,那就太好了。你能提供一个链接吗?谢谢!
-
感谢您的回复!今天早上我们又做了一些测试,发现实际请求并没有那么大,似乎也不是问题所在。我们现在可以手动让它崩溃,只需通过 curl/cli 发送一个删除属性的简单命令。实体中的总数据约为 1.1MB(例如,大于有效负载限制)可能是问题所在,即使有效负载没有超过限制?我可以在 PM 中向您发送实体数据(如 xml,或来自 mongodb 的转储),以便您可以在本地尝试吗?
-
是的,请给我发一个实体的 mongo dumpo 进行本地测试。此外,如果您可以编辑您的问题帖子以通过 curl/cli 包含删除该属性的命令,那就太好了。谢谢!
-
@fgalan 好的,太好了!我不想在这里发布到 db-dump 的链接,因为它包含生产数据,我如何通过 PM 联系到您?您能否通过在我们的support form 中发布一些内容来将您的电子邮件地址发送给我(这将向我发送一封电子邮件,我可以用它来回复数据库转储的链接)
标签: mongodb fiware-orion