PDO和Ubuntu无法正确处理TCP连接

时间:2018-09-21 10:34:51

标签: php mysql ubuntu pdo tcp

让我简要向您解释我的问题。

(针对该问题的)体系结构如下:

  • 1个带Apache 2.4服务器的Ubuntu 16.04; php-fpm 7.2和Laravel
  • 1个具有MariaDB v.15.2 distrib 10.2.14服务器的Ubuntu 16.04

从几天开始的问题是Web服务器抛出此错误:

  

SQLSTATE [HY000] [2002]无法分配请求的地址

到目前为止我发现的东西:

在MariaDB上

  • 〜30-40个并发连接
      

    netstat -nat | awk'{print $ 6}'|排序uniq -c |排序-n

  • TIME_WAIT 状态下显示平均约800-900个连接

到目前为止,一切似乎都是合法的。但是在Apache服务器上,发现如下:

  

netstat -nat | awk'{print $ 6}'|排序uniq -c |排序-n

  • 〜10-12k连接处于TIME_WAIT状态

当他们得到> 28k时,我收到上述错误。这是因为服务器具有约28k的空闲端口。 (范围为32768-61000)。昨天我将范围更改为10000-63000,并将TIME_WAIT状态下的等待更改为5秒,到目前为止,错误已停止。但这不是问题的真正解决方案

我想到的问题是:

  1. php PDO是否为每个用户启动数据库连接并为每个对数据库的查询打开TCP连接并重用创建的数据库连接? 如果是这样,是否可以在没有其他Web服务器的情况下解决此问题?

  2. 为什么在Apache和MariaDB的TIME_WAIT状态下的连接之间有如此大的差异?是PDO问题,无法正确关闭连接吗?

谢谢。

P.S .:与MariaDB的连接不是持久的

0 个答案:

没有答案