У нас есть веб-сайт, написанный на 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;
У меня слабо похожая проблема, когда я могу подключиться с помощью команды mysql в той же группе VPC / Security, но не с помощью PDO. Оказалось, что я не помещал host = в DSN перед IP.