Как решить проблему с множеством одномоментных подключений по API, которые исчерпывают лимит подключений?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
MarkL
Сообщения: 68
Зарегистрирован: 2017.07.05, 20:37

Как решить проблему с множеством одномоментных подключений по API, которые исчерпывают лимит подключений?

Сообщение MarkL »

Ситуация: Есть API, в нём метод для добавления данных, который обёрнут Mutex'ом для избежания "состояния гонки". Один из пользователей API в один момент 2-3 раза в день делает сотни обращений для добавления данных.

Проблема: Как результат, все запросы пользователя ставятся в очередь Mutex и обрабатываются.
Из-за этого забиваются подключения к базе данных и другие пользователи не могут получить доступ:
"PDOException: SQLSTATE[HY000] [1040] Too many connections in ...
Вопрос: Как решить проблему, чтобы для других пользователей оставались подключения?

Условия:
1. Из-за соображений безопасности не хочется выставлять большой max_connections(сейчас он 500). Тем более ситуация возникает 2-3 раза в день. Возможно стоит создать для API отдельного пользователя БД и выставить там ~1000-2000 подключений?
2. Со стороны клиента(пользователя API) ничего изменить нельзя. В том числе попросить слать меньше запросов в один момент.
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Как решить проблему с множеством одномоментных подключений по API, которые исчерпывают лимит подключений?

Сообщение yiiliveext »

Если запросы однотипные и подряд, то сделайте в апи возможность вставлять/обновлять записи пачками.
Ответить