Назад | Перейти на главную страницу

Подключения к базе данных AWS RDS 90+

У меня есть один экземпляр db.m5.large RDS, работающий в моей настройке aws. Когда я проверяю максимальное соединение с консоли mysql, с помощью запроса ниже.

mysql> show variables like 'max_connections';                                                                                                         
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 624   |
+-----------------+-------+

Итак, я предполагаю, что он может обрабатывать 624 соединения.

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

mysql> SHOW STATUS WHERE `variable_name` = 'Max_used_connections';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 99    |
+----------------------+-------+

Я предполагаю, что активных подключений 99, а остальные бесплатные.

Но моя система сигнализации AWS и система мониторинга RDS показывают, что на нее требуется 90+ db подключений. Но мой ЦП RDS при этом потребляет всего 8%. Этот сигнал тревоги / мониторинг - это просто количество или среднее максимальное количество подключений?

Меня мало беспокоит то, что мой сервер может остановиться после достижения максимального соединения (100) через некоторое время.

Может ли кто-нибудь сказать / объяснить ниже

  1. Как проверить фактическое максимальное количество доступных подключений и текущее количество подключений.
  2. Что такое метрические средства измерения? (только текущее количество подключений или среднее количество подключений?)
  3. Как из этого побороться?
    1. Если я хочу увеличить максимальное количество подключений, что мне делать?
    2. Мне нужно уменьшить количество подключений со стороны приложения?

max_connections = 624 говорит, что это будет позволять столько связей. Вероятно, он не сможет справиться с таким большим количеством одновременно.

Max_used_connections = 99 Значит это в какой-то момент с момента запуска было 99 подключений. Однако они могли сидеть без дела, ожидая, пока приложение (или пользователь) выдаст запрос.

Threads_running - это мгновенный подсчет количества подключений, которые на самом деле что-то делают в данный момент. Несколько десятков - это «большое» число для этого. Однако это мимолетный подсчет, поэтому наблюдение за ним скорее навязчиво, чем полезно.

Хорошо промасленный сервер MySQL будет использовать только 8% ЦП (или какое-то число намного меньше 100%).

В общем, вам следует попытаться уменьшить количество подключений со стороны приложения. Это может быть достигнуто

  • Отключение приложения по завершении
  • Нижняя wait_timeout - для загрузки соединений, которые не могут отключиться.
  • Уменьшить max_connections - но это довольно резко
  • Уменьшите количество «потоков» (или чего-то еще), запускаемых приложением. Это, например, настраивается в Apache.

Предлагаемые вами различные показатели не являются «действенными», поэтому я не буду пытаться придумывать, как их измерить.

Если ваше приложение работает медленно, который ключ к осмотру. Медленный журнал - это мое место "перехода" - оно не только сообщает, что возникла проблема, но и указывает, какой запрос "наихудший" (после использования некоторого дайджеста).

Если вам нужен обзор сотен VARIABLES и GLOBAL STATUS, видеть этот для информации, которая мне нужна. Их около 200 потенциал красные флажки, которые он ищет.