MySQL Слишком много соединений на сервере REST API (PHP Yii2)

0

Ищете совет здесь, как я мог бы лучше структурировать свое приложение. У меня есть REST API, который используется мобильными приложениями. API построен на PHP с использованием структуры Yii2, которая использует ActiveRecord (класс модели DAO) для доступа ко всем данным в базе данных.

В большинстве случаев API работает нормально, но иногда появляется всплеск в запросах API и, по большому счету, шип в соединениях БД, что означает, что все ответы начинают возвращать ошибку "Слишком много соединений". Я могу себе представить, что есть некоторые недостатки в мобильных приложениях, которые заставляют приложение отправлять слишком много запросов в цикле, но по мере того, как мое приложение масштабируется, мне интересно, если что-то может сделать это на стороне сервера (а не всегда полагаться на разработчикам мобильных приложений писать эффективный код). Любые советы приветствуются здесь и открывают для переноса API в другую структуру, если это означает, что он будет масштабироваться лучше.

Теги:
rest
yii2

1 ответ

1
Лучший ответ

Вы можете настроить mysql для увеличения максимального значения. Вам не нужно больше, чем общее количество запущенных вами процессов PHP. Если вы используете API с одного сервера, я бы предположил, что вам нужно всего пару сотен подключений, но умножьте это на количество приложений.

  • 0
    API запускается на одном сервере, но есть около дюжины других веб-приложений, которые подключаются напрямую к нему (опять же Yii2), но API, безусловно, является наибольшим количеством отдельных соединений, иногда достигает примерно 500-600 соединений, где он начинает выбрасывать ошибка «Слишком много соединений». Просто интересно, есть ли что-нибудь, что я могу сделать из самого API, а не просто увеличивая количество подключений mysql max.
  • 0
    @ Росс: 2 вещи, которые вы можете сделать, - это действительно увеличить количество соединений. Это довольно разумная вещь! Также обязательно избегайте постоянных подключений. Наконец, вы можете попытаться подключиться к mysql только тогда, когда вам нужно соединение, и разорвать соединение, как только вы этого не сделаете ... но 600 соединений разумно.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню