у меня есть сервер базы данных MySQL, db.t3.micro, группа параметров — «default.mysql8.0», максимальное _количество подключений — «{DBInstanceClassMemory/12582880}»
. выяснилось, что он не может обрабатывать более ~63 подключений.
Согласно документации AWS RDShttps://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.MaxConnections
Предельное количество подключений для Mysql рассчитывается по формуле «{DBInstanceClassMemory/12582880}», где память уровня экземпляра DBInstanceClassMemory в байтах.
Таким образом, для db.t3.micro 1Gb это 1073741824/12582880 = 85
'SHOW VARIABLES LIKE "max_connections";' возвращает 63
Уровень | Память, ГиБ | Память, байт | Расчетный лимит соединений | Реальный лимит соединений |
---|---|---|---|---|
db.t3.micro | 1 | 1073741824 | 85 | 63 |
db.t3.small | 2 | 2147483648 | 170 | 146 |
db.t3.2xlarge | 32 | 32x1073741824 | 2720 | 2634 |
Почему реальное количество подключений меньше результата формулы?
Таким образом, DBInstanceClassMemory на самом деле является TotalMemory-(Память, используемая ОС + другими процессами)
В документации Amazon ясно сказано
Класс экземпляра db.m5.xlarge. DBInstanceClassMemory составляет 16 ГиБ или 17 179 869 184 байт
, но это не так, а реальная память DBInstanceClassMemory будет меньше 16 ГБ