mysql established_php的mysqli扩展与mysql server的tcp/ip连接分析

php的mysqli扩展与mysql server的tcp/ip连接分析:

a:php-mysqli与mysql server分别在2台机器,php-mysqli连接mysqlserver进行测试,哪个端先断开连接:

经测试,有些php-mysqli扩展先主动断开tcp连接,因为在php-mysqli centos7机器上检测到很多处于TIME_WAIT状态的tcp连接。

有些sql server先主动断开tcp连接,因为在mysql server centos6.5机器上检测到很多处于TIME_WAIT状态的tcp连接。

b:如果php的mysqli扩展与mysql server在同一台机器,那么netstat如何显示Local Address 和Foreign Address

ESTABLISH状态: 会显示2次,如下图红色字体。

[root@bogon ~]# netstat -tan |grep 3306 |grep -v TIME_WAIT

tcp 0 0 127.0.0.1:3306 127.0.0.1:41882 ESTABLISHED

tcp 0 0 127.0.0.1:41998 127.0.0.1:3306 ESTABLISHED

tcp 0 0 192.168.2.146:44670 101.200.90.101:3306 ESTABLISHED

tcp 0 0 127.0.0.1:41914 127.0.0.1:3306 ESTABLISHED

tcp 0 0 192.168.2.146:35042 101.200.90.101:3306 ESTABLISHED

tcp 0 0 127.0.0.1:3306 127.0.0.1:41994 ESTABLISHED

tcp 0 0 127.0.0.1:41882 127.0.0.1:3306 ESTABLISHED

tcp 0 0 127.0.0.1:41922 127.0.0.1:3306 ESTABLISHED

tcp 0 0 127.0.0.1:41890 127.0.0.1:3306 ESTABLISHED

tcp 0 0 127.0.0.1:3306 127.0.0.1:41890 ESTABLISHED

TIME_WAIT状态: 看是mysqli还是mysql server主动断开,处于Local Address端的socket tcp端, 哪个主动断开哪个出现该状态,另一个被动断开的socket tcp端则不会出现该状态。也就是同一个socket连接netstat会出现2条tcp记录ESTABLISHD状态,仅仅出现一次TIME_WAIT状态。

异常分析: 经过实际测试,有的ESTABLISHD状态仅仅出现一条,不知道为何?可能是因为socket主动关闭端刚刚主动发出FIN码变为FIN-WAIT1状态,而被动关闭端尚未收到该FIN码,仍然处于ESTABLISHD状态(被动端收到FIN码后会变为CLOSE_WAIT状态),从而出现只有一个ESTABLISHD状态情况。但是经过实测同一次netstat –tan会出现就1次establish的情况,其他状态也没有再出现。还有同一个socket竟然有1个ESTABLISHD和一个TIME_WAIT状态的情况,有待以后继续分析???看到文章者如知道原因,希望联系我们微信1415035017.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值