Lista de verificación para la resolución de problemas
La siguiente es una breve lista de cosas a verificar en caso de tener un problema.
¿Llamaste?
mongoc_init()¿Enmain()? Si no, probablemente verás una falla de segmentación.¿Se han filtrado algunos clientes o cursores como los que se pueden encontrar con
mongoc-stat <PID>?¿Se han entregado los paquetes al servidor? Consulte los bytes de salida de
mongoc-stat <PID>.¿
ASANmuestra alguna fuga? Asegúrate de llamar amongoc_cleanup()al final del proceso para limpiar las asignaciones restantes del controlador C de MongoDB.Si compila su propia copia de MongoDB C Driver, considere usar la opción cmake
-DENABLE_TRACING=ONpara habilitar el seguimiento de funciones y los volcados hexadecimales de paquetes de red aSTDERRySTDOUT.
Contadores de rendimiento
El controlador C de MongoDB incluye una función opcional y única para ayudar a los desarrolladores y administradores de sistemas a solucionar problemas en producción. Los contadores de rendimiento están disponibles para cada proceso que utiliza el controlador C. Si están disponibles, se puede acceder a los contadores fuera del proceso de la aplicación mediante un segmento de memoria compartida. Los contadores pueden utilizarse para graficar fácilmente las estadísticas del proceso de la aplicación desde herramientas como Munin o Nagios. Por ejemplo, el comando watch --interval=0.5 -d mongoc-stat $PID puede utilizarse para monitorizar una aplicación.
Los contadores de rendimiento solo están disponibles en plataformas Linux y macOS arm64 compatibles con segmentos de memoria compartida. En las plataformas compatibles, están habilitados de forma predeterminada. Las aplicaciones se pueden compilar sin los contadores especificando la opción cmake -DENABLE_SHM_COUNTERS=OFF. Además, si los contadores de rendimiento ya están compilados, se pueden deshabilitar en tiempo de ejecución especificando la variable de entorno MONGOC_DISABLE_SHM.
Los contadores de rendimiento realizan un seguimiento de lo siguiente:
Cursores activos y desechados
Clientes activos y eliminados, grupos de clientes y flujos de sockets.
Número de operaciones enviadas y recibidas, por tipo.
Bytes transferidos y recibidos.
Éxitos y fracasos de autenticación.
Número de errores de protocolo de cable.
Nota
Se considera que una operación ha sido "enviada" cuando uno o más bytes del mensaje correspondiente se escriben en el flujo, independientemente de si el mensaje completo se ha escrito correctamente o si la operación finalmente tiene éxito o falla. Esto no incluye los bytes que pueden escribirse durante el proceso de conexión del flujo, tales como los mensajes de handshake TLS.
Para acceder a los contadores de un proceso determinado, simplemente proporcione el identificador del proceso al programa mongoc-stat instalado con el controlador C de MongoDB.
$ 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
Cómo enviar un informe de error
¿Crees haber encontrado un error? ¿Quieres ver una nueva función en el controlador C de MongoDB? Abre un caso en nuestra herramienta de gestión de incidencias, JIRA:
Crea una cuenta e inicia sesión.
Navegue hasta el proyecto CDRIVER.
Haga clic en Crear problema: proporcione tanta información como sea posible sobre el tipo de problema y cómo reproducirlo.
Los informes de errores en JIRA para todos los proyectos de controladores (es decir, CDRIVER, CSHARP, JAVA) y el proyecto Core Server (es decir, SERVER) son públicos.