LoginSignup
1

More than 1 year has passed since last update.

ネットワークIOが刺さったプロセスの接続先がどこかを知るためのTIPS

Last updated at Posted at 2020-12-03

nfsなりdbへ接続するプロセスがあったとして接続先が原因でプロセスのIO刺さることは多々ある。

刺さったプロセスがどこに対するIOでその状態になったかを特定する方法の記事

# 刺さったプロセスのPIDを取得
$ ps aux | grep "プロセス名"

# pidから開いているソケットを確認
$ ls -l /proc/${PID}/fd

# straceを使ってfdの番号を取得
$ strace -p ${PID}

# fdを取得したらsocketの接続先を取得する
$ readlink /proc/${PID}/fd/${↑で取得したfd}

# ソケットのinodeを頼りにnetstatでgrep
$ netstat -antep | grep ${↑で取得したinode}

straceでソケットを取得する方法が意外にもlsofが入ってる環境なら

$ lsof -i -a -p $PID

だけで取得できてしまう。
やってることはファイルディスクリプタとソケットの話がわかればとっても簡単だけどlsofで一発で取れちゃう。

この他にも/proc/net/tcpから取得する方法もあるとのこと。16進数への変換やらが必要なので手数的にはこっちの方が少ないので使い分けるのも良さそう。
http://blog.1q77.com/2020/10/socket-in-proc-pid-fd/

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1