我们有一个用 PHP 编写的网站,托管在 AWS EC2 实例上,与 AWS RDS 数据库通信。当网站流量很高时,一些用户在页面上遇到 503 错误,我们可以在 Apache 日志中看到这些错误:
Uncaught Exception: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2003] Can't connect to MySQL server on ...
我最初的想法是来自 PHP 的连接太多,超出了 RDS 的最大限制。但是,这是我从 RDS 获得的结果
show variables like '%conn%';
connect_timeout 10
max_connect_errors 100
max_connections 2486
max_user_connections 0
RDS 监控告诉我实际的数据库连接数小于300。
我是否遗漏了什么?
如果有用的话,这是建立连接的代码:
$dbh = new PDO('mysql:host='.$db_host.';dbname='.$wp_db_name, $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $dbh;
答案1
我遇到了一个类似的问题,我可以使用同一 VPC/安全组中的 mysql 命令进行连接,但不能使用 PDO。原来我没有在 IP 之前的 DSN 中输入 host=。