当 MySQL 的并发连接数过多时,所有 Apache-PHP 站点都无法连接到数据库

当 MySQL 的并发连接数过多时,所有 Apache-PHP 站点都无法连接到数据库

我正在使用亚马逊的 RDS,并将 MySQL 配置调到最大。但是,当连接数达到一定活动数时,所有站点都将停止连接到 MySQL。它是内部网络设置,没有带宽限制和 128GB RAM 32 核 Windows Server 2019 数据中心 ECS 实例。

以下是我的 MPM、Httpd.conf 和 PHP.ini 可能是由以下配置导致的吗?

**MPM ConfigurationX**
<IfModule mpm_winnt_module>
    ThreadLimit       2000000
    ThreadsPerChild   2000000
    MaxConnectionsPerChild 0
    MaxRequestsPerChild    0
</IfModule>

**HTTPD2.4 Configuration**
KeepAliveTimeout 180
MaxKeepAliveRequests 10000
Timeout 3200
FcgidMaxRequestLen 51200000
<IfModule mpm_winnt_module>
    MaxConnectionsPerChild 10000000
    ThreadsPerChild 1920
</IfModule>

**PHP7.0 Configuration**
max_execution_time = 1800
max_input_time = 60
memory_limit = 65536M

所有调用都来自同一个实例,共享同一个 php 文件以启动数据库连接。大约 20 个连接由 20 个站点共享,同时打开 200 个页面。数据库将拒绝连接。以下是 RDS 的设置 innodb_io_capacity 18446744073709551615 innodb_io_capacity_max 4294967295 innodb_read_io_threads 64 innodb_write_io_threads 64

具有 20 个数据库实例的单个 RDS 实例。

用于启动站点全球使用的数据库实例的 PHP 代码。

$db1 = new MySQLi("mysql.abc.com","testing","abc#123","testing",3306);
$db1->query("set names utf8");
unset($db2);
$db2 = new MySQLi("mysql.abc.com","testing","abc#123","testing",3306);
$db2->query("set names utf8");

相关内容