在进行服务性能分析时,有时需要确认连接池、长连接、短连接相关的问题,需要查看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:~$
从而可以确定,这个连接一直存在。
不多说。