У меня есть веб-сайт с высоким трафиком c, я использую HAProxy для LoadBalancer и поместил свое приложение Laravel на 3 сервера, и я настроил отдельный сервер для Redis и базы данных (моя база данных Postgresql). И поскольку я использовал балансировщик нагрузки, я перенес все сеансы в базу данных.
Сегодня у меня был пик на моем сайте, и большинство моих пользователей получили ошибку 500 internal server
. Они часто получают эту ошибку, когда необходимо проверить их разрешение / аутентификацию. Когда я проверил файл журнала, я обнаружил, что в файле журнала есть много исключений базы данных, что и стало причиной внутренней ошибки сервера.
[2020-01-15 14:14:21] producton.ERROR: SQLSTATE[08006] [7] FATAL: sorry, too many clients already (SQL: select * from "sessions" where "id" = blahblahblah limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 7): SQLSTATE[08006] [7] FATAL: sorry, too many clients already (SQL: select * from \"sessions\" where \"id\" = blahblahblah limit 1) at /home/site/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664, Doctrine\\DBAL\\Driver\\PDOException(code: 7): SQLSTATE[08006] [7] FATAL: sorry, too many clients already at /home/site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:31, PDOException(code: 7): SQLSTATE[08006] [7] FATAL: sorry, too many clients already at /home/site/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:27)
Я искал по inte rnet и нашел какое-то решение Некоторые люди говорят, что я должен увеличить max_connections
в PostgreSQL, некоторые люди говорят, что вы должны решить эту проблему на прикладном уровне. но я использовал Laravel framework и не знаю, что мне делать.
кто-нибудь может мне помочь?