日期:2014-05-16  浏览次数:20586 次

linux上使用netstat察看mysql端口和连接

linux上使用netstat察看mysql端口和连接

近日发现写的一个java程序的数据库连接在大压力下工作不打正常,因此研究了一下dbcp,中间为了查看mysql服务器的数据库连接情况,需要使用 netstat来查看端口和连接, 将使用到的命令整理了一下备忘, 这些命令同样可以用于查看其他运用程序的端口和连接情况.

netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息,这里我只用到其中的部分功能.

直接输入netstat,显示
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address?????????? Foreign Address???????? State?????
tcp??????? 0????? 0 localhost:41144???????? localhost:41147???????? ESTABLISHED
tcp??????? 0????? 0 localhost:21576???????? localhost:21579???????? ESTABLISHED
tcp??????? 0????? 0 linux.local:telnet????? 10.3.18.129:nbx-au????? ESTABLISHED
tcp??????? 1????? 0 localhost:39706???????? localhost:58099???????? CLOSE_WAIT?
......
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags?????? Type?????? State???????? I-Node Path
unix? 2????? [ ]???????? DGRAM??????????????????? 910??? /var/named/dev/log
unix? 2????? [ ]???????? DGRAM??????????????????? 908??? /var/lib/dhcp/dev/log
unix? 8????? [ ]???????? DGRAM??????????????????? 906??? /dev/log
.....

输出结果可以分为两个部分,一个是Active Internet connections,另一个是Active UNIX domain sockets.

netstat 的常用参数: - t、- u、- w和- x分别表示TCP、UDP、RAW和UNIX套接字连接。-a标记,还会显示出等待连接(也就是说处于监听模式)的套接字。-l 显示正在被监听(listen)的端口, -n表示直接显示端口数字而不是通过察看/etc/service来转换为端口名,-p选项表示列出监听的程序

1) netstat -tl
查看当前tcp监听端口
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address?????????? Foreign Address???????? State?????
tcp??????? 0????? 0 *:rrac????????????????? *:*???????????????????? LISTEN?????
tcp??????? 0????? 0 *:34006???????????????? *:*???????????????????? LISTEN?????
......

2) netstat -tlp
查看当前tcp监听端口, 需要显示监听的程序名,当不清楚mysql的监听端口时比较好用
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address?????????? Foreign Address???????? State?????? PID/Program name??
tcp??????? 0????? 0 *:rrac????????????????? *:*???????????????????? LISTEN????? -?????????????????????????
tcp??????? 0????? 0 *:34006???????????????? *:*???????????????????? LISTEN????? 23425/mysqld??
......


3) netstat -tl | grep 34006
??? 只查看mysql的监听端口,当前启动的mysql端口为34006,明确知道mysql监听端口时使用
4) netstat -ta | grep 34006
tcp??????? 0????? 0 *:34006???????????????? *:*???????????????????? LISTEN?????
tcp??????? 0????? 0 linux.local:34006?????? linux.local:41485?????? ESTABLISHED
tcp??????? 0????? 0 linux.local:34006?????? linux.local:41486?????? ESTABLISHED
...
tcp??????? 0????? 0 10.3.2.35:41488???????? 10.3.2.35:34006???????? ESTABLISHED
tcp??????? 0????? 0 10.3.2.35:41489???????? 10.3.2.35:34006???????? ESTABLISHED
tcp??????? 0????? 0 10.3.2.35:41490???????? 10.3.2.35:34006???????? ESTABLISHED

由于数据库和运用程序都放在同一台机器了,因此这里连接被显示了两次. 可以使用-p参数来显示PID,然后grep PID.


5) netstat -tap | grep 34006 | grep 23425
??? 23425是当前mysql的PID
tcp??????? 0????? 0 *:34006???????????????? *:*???????????????????? LISTEN????? 23425/mysqld???????
tcp??????? 0????? 0 linux.local:34006?????? linux.local:41510?????? ESTABLISHED 23425/mysqld???????
tcp??????? 0????? 0 linux.local:34006?????? linux.local:41511?????? ESTABLISHED 23425/mysqld???????
tcp??????? 0????? 0 linux.local:34006?????? linux.local:41516?????? ESTABLISHED 23425/mysqld??