Docs 菜单
Docs 主页
/ / /
C 驱动程序
/

基本故障排除

在此页面上

  • 故障排除清单
  • 性能计数器
  • 提交错误报告

以下是出现问题时需要检查的事项的简短列表。

  • mongoc_init()您是否在 中调用了main() ?否则,您可能会看到段错误。

  • 您是否泄漏了可以通过mongoc-stat <PID>发现的任何客户端或游标?

  • 数据包是否已发送到服务器? 查看来自mongoc-stat <PID>的出站字节数。

  • ASAN是否显示任何泄漏? 确保在进程结束时调用mongoc_cleanup()以清除 MongoDB C 驱动程序中的延迟分配。

  • 如果要编译您自己的MongoDB C驱动程序副本,请考虑使用 cmake 选项-DENABLE_TRACING=ON来启用函数跟踪以及将网络数据包的十六进制转储到STDERRSTDOUT

MongoDB C驱动程序附带一项可选且独特的功能,可帮助开发人员和系统管理员解决生产中的问题。 每个使用C驱动程序的进程都有性能计数器。 如果可用,可以通过共享内存段在应用程序进程之外访问计数器。 这些计数器可通过 Munin 或 Nagios 等工具轻松用于有关应用程序进程的图表统计。 示例,命令watch --interval=0.5 -d mongoc-stat $PID可用于监控应用程序。

性能计数器仅在支持共享内存段的 Linux 平台和 macOS arm 64平台上可用。 在支持的平台上,它们默认启用。 通过指定 cmake 选项-DENABLE_SHM_COUNTERS=OFF ,可以在没有计数器的情况下构建应用程序。 此外,如果性能计数器已编译,则可以通过指定环境变量MONGOC_DISABLE_SHM在运行时禁用它们。

性能计数器追踪以下内容:

  • 活动游标和已处理游标

  • 活动和已弃置客户端、客户端池和套接字流。

  • 按类型发送和接收的操作数。

  • 传输和接收的字节数。

  • 身份验证成功和失败。

  • 传输协议错误数。

注意

当相应消息的一个或多个字节写入流时,操作被视为“已发送”,无论整个消息是否成功写入,也无论操作最终成功还是失败。 这不包括在流连接进程中可能写入的字节,例如 TLS 握手消息。

要访问权限给定进程的计数器,只需向随MongoDB C驱动程序程序安装的mongoc-stat程序提供进程ID 即可。

$ mongoc-stat 22203
Operations : Egress Total : The number of sent operations. : 13247
Operations : Ingress Total : The number of received operations. : 13246
Operations : Egress Queries : The number of sent Query operations. : 13247
Operations : Ingress Queries : The number of received Query operations. : 0
Operations : Egress GetMore : The number of sent GetMore operations. : 0
Operations : Ingress GetMore : The number of received GetMore operations. : 0
Operations : Egress Insert : The number of sent Insert operations. : 0
Operations : Ingress Insert : The number of received Insert operations. : 0
Operations : Egress Delete : The number of sent Delete operations. : 0
Operations : Ingress Delete : The number of received Delete operations. : 0
Operations : Egress Update : The number of sent Update operations. : 0
Operations : Ingress Update : The number of received Update operations. : 0
Operations : Egress KillCursors : The number of sent KillCursors operations. : 0
Operations : Ingress KillCursors : The number of received KillCursors operations. : 0
Operations : Egress Msg : The number of sent Msg operations. : 0
Operations : Ingress Msg : The number of received Msg operations. : 0
Operations : Egress Reply : The number of sent Reply operations. : 0
Operations : Ingress Reply : The number of received Reply operations. : 13246
Cursors : Active : The number of active cursors. : 1
Cursors : Disposed : The number of disposed cursors. : 13246
Clients : Active : The number of active clients. : 1
Clients : Disposed : The number of disposed clients. : 0
Streams : Active : The number of active streams. : 1
Streams : Disposed : The number of disposed streams. : 0
Streams : Egress Bytes : The number of bytes sent. : 794931
Streams : Ingress Bytes : The number of bytes received. : 589694
Streams : N Socket Timeouts : The number of socket timeouts. : 0
Client Pools : Active : The number of active client pools. : 1
Client Pools : Disposed : The number of disposed client pools. : 0
Protocol : Ingress Errors : The number of protocol errors on ingress. : 0
Auth : Failures : The number of failed authentication requests. : 0
Auth : Success : The number of successful authentication requests. : 0

您认为您发现了错误? 想要查看MongoDB C驾驶员中的新功能? 请在我们的问题管理工具 Jira 中打开案例:

  • 创建帐户并登录

  • 导航到 CDRIVER项目

  • 单击“创建问题- 请提供尽可能多的有关问题类型以及如何重现问题的信息”。

JIRA 中针对所有驾驶员项目(即 CDRIVER、 C# 、 Java )和核心服务器(即 SERVER)项目都是公开的。

后退

身份验证