基本的なトラブルシューティング
トラブルシューティング チェックリスト
以下は、問題が発生した場合に確認すべき事項の短いリストです。
main()
でmongoc_init()
を呼び出しましたか? そうでない場合は、セグメント違反が発生する可能性が高くなります。mongoc-stat <PID>
で見つかるクライアントまたはカーソルのリークはありますか。サーバーにパケットが配信されたかどうか。
mongoc-stat <PID>
からの Egress バイトが表示されます。ASAN
はリークを表示しますか。 MongoDB C ドライバーからのリング割り当てをクリーンアップするには、必ずプロセスの最後にmongoc_cleanup()
を呼び出します。MongoDB C ドライバーの独自のコピーをコンパイルする場合は、
STDERR
とSTDOUT
への関数トレースとネットワーク パケットの 16 進数ダンプを有効にするために cmake オプション-DENABLE_TRACING=ON
の使用を検討してください。
パフォーマンス カウンター
MongoDB C ドライバーには、開発者とシステム管理者が本番環境の問題をトラブルシューティングするのに役立つオプションかつ固有の機能が付属しています。 パフォーマンス カウンターは、C ドライバーを使用する各プロセスで利用可能です。 使用可能な場合、共有メモリ セグメントを介してアプリケーション プロセスの外部でカウンターにアクセスできます。 カウンターは、アプリケーション プロセスに関する統計情報を示すグラフを表示するために、MongoDB や Nagis などのツールから簡単に使用できます。 たとえば、アプリケーションを監視するには、コマンドwatch --interval=0.5 -d mongoc-stat $PID
を使用できます。
パフォーマンス カウンターは、共有メモリ セグメントをサポートする Linux プラットフォームと macOS arm 64プラットフォームでのみ使用できます。 サポートされているプラットフォームでは、デフォルトで有効になっています。 cmake オプション-DENABLE_SHM_COUNTERS=OFF
を指定することで、カウンターなしでアプリケーションを構築できます。 さらに、パフォーマンス カウンターがすでにコンパイルされている場合は、環境変数MONGOC_DISABLE_SHM
を指定することで実行時に無効にすることができます。
パフォーマンス カウンターは、次の情報を追跡します。
アクティブなカーソルと無効なカーソル
アクティブなクライアントと無効なクライアント、クライアント プール、ソケット ストリーム。
送受信された操作の数(タイプ別)。
転送および受信されたバイト数。
認証の成功と失敗。
ワイヤプロトコル エラーの数。
注意
操作は、メッセージ全体が正常に書込まれたかどうか、または操作が最終的に成功したか失敗したかに関係なく、対応するメッセージの 1 バイト以上がストリームに書込まれた場合に「送信」と見なされます。 これには、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、 C# 、 Java )および Core Server(つまり SERVER)プロジェクトはパブリックです。