Re: MySQL over TCP results on CLOSE_WAIT state in PHP 5.3.8
| From: | php-list at dubistmeinheld dot de | Date: | Mon, 05 Mar 2012 15:33:33 +0000 |
| Subject: | Re: MySQL over TCP results on CLOSE_WAIT state in PHP 5.3.8 | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-316883@lists.php.net to get a copy of this message | ||
> > I have a MySQL server A, a server B with PHP 5.3.8 and a server C with
> > PHP 5.3.3. I'm connecting to the MySQL server on A via TCP from B and C
> > using an internal network. Server B and C use the same PHP application.
> > There are also same PHP scripts that get data from the database and then
> > calculate up to 30 minutes. I close all database connection before doing
> > the calculation to save connections (and ports) using:
> > $thread_id = mysqli_thread_id( $this->handle );
> > mysqli_kill( $this->handle, $thread_id );
> > mysqli_close( $this->handle );
> >
> > During a review on our servers I discovered that server B has a lot of
> > network connection in the state "CLOSE_WAIT". Server C running the same
> > PHP application has not. I see the difference that server B is using
> > mysqlnd and server C not.
> >
> > serverB# netstat -an | grep 3306
> > tcp 1 0 10.8.0.58:47455 10.8.0.1:3306
> > CLOSE_WAIT
> >
> > serverA# cat firewall
> > Feb 17 16:21:49 www kernel: [6587053.325075] SFW2-OUT-ERROR IN= OUT=tun0
> > SRC=10.8.0.1 DST=10.8.0.58 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF
> > PROTO=TCP SPT=3306 DPT=47455 WINDOW=0 RES=0x00 RST URGP=0
> >
> > Does anybody have an idea why this happens? How can I avoid this or
> > investigate in this? Is this a know issue?
>
> Is the underlying OS for servers B & C exactly the same? Down to
> kernel version (if Linux/Unix), NICs and driver version,
> configurations, etc.? It would help if specify OS type and kernel
> version.
No, client B and C have different OS versions. You are right this can be a
reason too. Do you have any hints how I can trace that down?
Details client B (newer OS with CLOSE_WAIT problems):
$ uname -a
Linux www3 3.1.9-1.4-default #1 SMP Fri Jan 27 08:55:10 UTC 2012 (efb5ff4)
x86_64 x86_64 x86_64 GNU/Linux
$ mysql --version
mysql Ver 14.14 Distrib 5.5.16, for Linux (x86_64) using readline 6.2
$ ethtool -i eth0
driver: r8169
version: 2.3LK-NAPI
firmware-version: rtl_nic/rtl8168e-2.fw
bus-info: 0000:04:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes
Details client C:
$ uname -a
Linux www13 2.6.34.10-0.4-default #1 SMP 2011-10-19 22:16:41 +0200 x86_64
x86_64 x86_64 GNU/Linux
$ mysql --version
mysql Ver 14.14 Distrib 5.1.57, for suse-linux-gnu (x86_64) using readline
6.1
$ ethtool -i eth0
driver: r8169
version: 2.3LK-NAPI
firmware-version:
bus-info: 0000:04:00.0
Server A:
Linux www 3.1.9-1.4-default #1 SMP Fri Jan 27 08:55:10 UTC 2012 (efb5ff4)
x86_64 x86_64 x86_64 GNU/Linux
$ mysql --version
mysql Ver 14.14 Distrib 5.5.16, for Linux (x86_64) using readline 6.2
$ ethtool -i eth0
driver: r8169
version: 2.3LK-NAPI
firmware-version: rtl_nic/rtl8168e-2.fw
bus-info: 0000:04:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes
I also have set wait_timeout 45 in my.cnf on server A and mysqli.reconnect On
on client B and C in php.ini.