让我简要向您解释我的问题。
(针对该问题的)体系结构如下:
从几天开始的问题是Web服务器抛出此错误:
SQLSTATE [HY000] [2002]无法分配请求的地址
到目前为止我发现的东西:
在MariaDB上
netstat -nat | awk'{print $ 6}'|排序uniq -c |排序-n
到目前为止,一切似乎都是合法的。但是在Apache服务器上,发现如下:
netstat -nat | awk'{print $ 6}'|排序uniq -c |排序-n
当他们得到> 28k时,我收到上述错误。这是因为服务器具有约28k的空闲端口。 (范围为32768-61000)。昨天我将范围更改为10000-63000,并将TIME_WAIT状态下的等待更改为5秒,到目前为止,错误已停止。但这不是问题的真正解决方案。
我想到的问题是:
php PDO是否为每个用户启动数据库连接并为每个对数据库的查询打开TCP连接并重用创建的数据库连接? 如果是这样,是否可以在没有其他Web服务器的情况下解决此问题?
为什么在Apache和MariaDB的TIME_WAIT状态下的连接之间有如此大的差异?是PDO问题,无法正确关闭连接吗?
谢谢。
P.S .:与MariaDB的连接不是持久的