Linux TCP ソケットの inode が与えられたら(を通じて得られる)、このソケットから得ることができる情報を /proc/<pid>/fd
見つけるより速い方法はありますか?/proc/net/tcp
プロセスを監視し、IOジョブに関するリアルタイム情報を印刷するトラブルシューティングツールを作成しましたが、strace
タイプ情報はより高いレベルの抽象化で収集され、あまり原始的ではありませんが、負荷の高いWebサーバーでは時間がかかります。 。ソケット情報(外部アドレス/ポートなど)を照会することは、サイズ/proc/net/tcp
(現在見ているサーバーで約2 MB)のため不可能です。
キャッシュを介してこれを管理できますが、これは必然的に待ち時間が発生し、ソケットから情報を見つけるために2MBのASCIIテキストを読み取って解析する必要がある「API」の不条理について疑問に思うでしょう。
ベストアンサー1
これはリンクですlibnetfilter_conntrack。ライブラリから直接C関数呼び出しをサポートする言語でプログラムを再構築する必要があります。しかし、このライブラリには、そのテキストファイルを解析するよりも、必要なデータをすばやく取得するために必要なリンクがあると思います。
これはiptstate
プログラムはタスクを実行するために使用されます。