Lista de verificação de solução de problemas
Veja a seguir uma pequena lista de itens a serem verificados quando você tiver um problema.
Você chamou
mongoc_init()
emmain()
? Caso contrário, você provavelmente verá uma segfault.Você vazou algum cliente ou cursor, pois pode ser encontrado com
mongoc-stat <PID>
?Os pacotes foram entregues no servidor? Veja bytes de saída de
mongoc-stat <PID>
.ASAN
mostra algum vazamento? Certifique-se de chamarmongoc_cleanup()
no final do processo para limpar as alocações persistentes do driver MongoDB C.Se estiver compilando sua própria cópia do MongoDB C Driver, considere usar a opção cmake
-DENABLE_TRACING=ON
para ativar o rastreamento de funções e os despejos hexadecimais de pacotes de rede paraSTDERR
eSTDOUT
.
Contadores de desempenho
O MongoDB C Driver vem com um recurso opcional e exclusivo para ajudar desenvolvedores e administradores de sistema a solucionar problemas na produção. Contadores de desempenho estão disponíveis para cada processo usando o C Driver. Se disponíveis, os contadores podem ser acessados fora do processo do aplicação por meio de um segmento de memória compartilhada. Os contadores podem ser usados estatísticas de gráficos sobre o processo do seu aplicação facilmente a partir de ferramentas como Monin ou Nagios. Por exemplo, o comando watch --interval=0.5 -d mongoc-stat $PID
pode ser utilizado para monitorar um aplicação.
Os contadores de desempenho estão disponíveis somente em plataformas Linux e macOS arm64 plataformas que suportam segmentos de memória compartilhada. Em plataformas suportadas, eles são habilitados por padrão. Os aplicativos podem ser construídos sem os contadores especificando a opção cmake -DENABLE_SHM_COUNTERS=OFF
. Além disso, se os contadores de desempenho já estiverem compilados, eles poderão ser desativados no tempo de execução especificando a variável de ambiente MONGOC_DISABLE_SHM
.
Os contadores de desempenho acompanham o seguinte:
Cursores ativos e descartados
Clientes ativos e descartados, pools de clientes e fluxos de soquete.
Número de operações enviadas e recebidas, por tipo.
Bytes transferidos e recebidos.
Sucessos e falhas de autenticação.
Número de erros de protocolo de fio.
Observação
Uma operação é considerada "enviada" quando um ou mais bytes da mensagem correspondente são gravados no fluxo, independentemente de a mensagem inteira ser escrita com sucesso ou se a operação for bem-sucedida ou falhar. Isso não inclui bytes que podem ser gravados durante o processo de conexão do stream, como mensagens de handshake TLS.
Para acessar contadores de um determinado processo, basta fornecer o ID do processo ao programa mongoc-stat
instalado com o MongoDB C Driver.
$ 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
Enviando um relatório de bug
Acha que encontrou um bug? Quer ver uma nova funcionalidade no driver do MongoDB C? Abra um caso em nossa ferramenta de gerenciamento de problemas, JIRA:
Navigate to the CDRIVER project.
Clique em Criar problema - Forneça o máximo de informações possível sobre o tipo de problema e como reproduzi-lo.
Relatórios de bugs no JIRA para todos os projetos de driver (ou seja, CDRIVER, C#, Java) e o servidor principal (ou seja, SERVER ) são públicas.