編集者No.1
私の仕事は、ミラーリング、つまりrsyncとrshを使用して、更新されたデータをマスターからすべてのミラーにコピーすることです。しかし、rsyncとrshの間にわずかな遅延が見られました。私の考えでは、遅延の原因がリバースDNSルックアップのためであるようです。だから、メインサーバーがミラーサーバーに接続されたときにリバースDNSルックアッププロセスに費やされた時間を記録したいと思います。
私のアプリケーションでリバースDNSルックアップシステムコールが呼び出されるかどうかを検出したいと思います。それでは、どのコマンドが役に立ちますか?
リバースDNSルックアップの場合、システムコールはgetnameinfo()です。他の人がいれば教えてください。
私のプロジェクトでこのシステムコールを追跡したいと思います。どのコマンドを使用できますか?
私はltrace / straceコマンドがスクリプトが終了するまで呼び出されるすべてのシステム呼び出しを追跡できることを知っていますが、私のプロジェクトではすべてのシステム呼び出し追跡が使用されていないため、追加のオーバーヘッドが発生します。
rsyncとrshの間にリバースDNSルックアップに費やされた時間を記録したいと思います。
私の問題を解決するのに役立ちます。
答え1
まず、getnameinfo
システムコールではなくglibc関数です。
ただし、とにかくwireshark
トラフィック監視を実行すると、DNSクエリで機能します。
編集する
アプリケーションをプロファイリングするには、gprof
おそらくこのガイドを読んでください
答え2
通常、サーバーはクライアントIPのリバースDNSルックアップを実行し、クライアントがトレースを数回実行してもこれを通知しません。
あなたがする必要があるのは、サーバーの構成またはネットワーク活動を確認することです。strace
そして、同様のことは、tcpdump
WiresharkまたはWiresharkを使用してネットワークアクティビティを表示することとはまったく一致しません。