Как определить соответствующие max_user_connections в MySQL? - PullRequest
1 голос
/ 02 апреля 2020

За последние несколько недель у меня была пара max_user_connections. Мое старое значение было установлено на 50, и я мог получать более 100 ошибок в день. Мое новое значение - 100, и оно уменьшилось до 0-5 в день.

Я пытаюсь найти сладкое пятно, но не могу определить, что именно это должно быть. Есть ли конкретные c тесты или проверки, которые мы можем запустить, чтобы определить необходимое значение?

Вот пример ошибки с этого утра:

(HY000/1226): User 'y12345_yugipub' has exceeded the 'max_user_connections' resource (current value: 100)

Эта учетная запись пользователя используется в нескольких сценариях по всему сайту. Он используется для моих API вместе с внутренними проверками соединений.

Некоторые статистические данные сайта:

  • 35 тыс. Пользователей в день
  • 250 тыс. Просмотров страниц в день
  • Кэширование на стороне сервера PHP кеширование с использованием PHPFastCache. Это уменьшает количество запросов к БД. Однако, когда кэш очищен, это может вызвать скачки.

MySQL Трафик / Соединения: enter image description here

Я пытаюсь дать столько же Информация здесь возможна, так как я не знаю точно, что нужно для определения правильного значения. Мои теории:

  • Использовать отдельные MySQL учетные записи для API? Насколько я понимаю, max_user_connections основывается на учетной записи?
  • Просто увеличивайте лимит до тех пор, пока ошибки не прекратятся?
  • Пересмотрите очистку кэша, чтобы попытаться избежать скачков

РЕДАКТИРОВАТЬ: В соответствии к этой статье , возможно, с использованием разных учетных записей решит проблему. Я думаю, что я, вероятно, настрою свой publi c API для использования учетной записи, отличной от моих внутренних API, поскольку в настоящее время большинство всех моих сценариев используют одну учетную запись.

Из статьи:

Есть лучшее решение: использовать разные учетные записи пользователей для разных скриптов и приложений и применять для них ограничение ресурсов.

РЕДАКТИРОВАТЬ 5 дней спустя: кажется, разделение API на собственную учетную запись MySQL БД решило проблему, так как с тех пор я получил 0 из этих ошибок. Однако я все равно был бы открыт для любого, у кого есть хороший способ составления теории, каким будет оптимальное значение.

...