在進行服務性能分析時,有時需要確認連接池、長連接、短連接相關的問題,需要查看tcp連接的建立時間? 怎麼看?
1. 以如下tcp鏈接爲例:
ubuntu@VM-0-15-ubuntu:~$ netstat -nap | grep -i esta
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
tcp 0 0 172.17.0.15:38262 169.254.0.55:5574 ESTABLISHED -
2. 查端口38262對應的進程,可以看到,是root用戶開啓的進程,所以要用sudo:
ubuntu@VM-0-15-ubuntu:~$ lsof -i:38262
ubuntu@VM-0-15-ubuntu:~$ sudo lsof -i:38262
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
YDService 12335 root 6u IPv4 42480944 0t0 TCP 172.17.0.15:38262->169.254.0.55:5574 (ESTABLISHED)
ubuntu@VM-0-15-ubuntu:~$
3. 觀察到FD=6, 進程號是12335, 可以看到tcp連接創建時間是:Feb 21 00:03
ubuntu@VM-0-15-ubuntu:~$ ls -l /proc/12335/fd/6
ls: cannot access '/proc/12335/fd/6': Permission denied
ubuntu@VM-0-15-ubuntu:~$ sudo ls -l /proc/12335/fd/6
lrwx------ 1 root root 64 Feb 21 00:03 /proc/12335/fd/6 -> socket:[42480944]
ubuntu@VM-0-15-ubuntu:~$
從而可以確定,這個連接一直存在。
不多說。