max_connections
WARNING (2 rules)INFO
Rule IDs: cn_001, cn_002, cn_006
Overview
- Purpose
- Documented in the MySQL 8.4 manual as a server system variable (scope: Global). Purpose and semantics are described at the linked manual page.
- Dynamic (MySQL 8.4 reference)
- MySQL 8.4 marks this variable as dynamic (
Dynamic= Yes). Runtime changes useSET GLOBAL(global scope) orSET SESSION(session scope) — confirm syntax and persistence (SET PERSIST) in the manual. - Default value
- 151 (MySQL 8.4)
- Version and product notes
- MariaDB and Percona Server may use different names, defaults, or dynamic behavior; verify their documentation.
- Documentation
- https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_max_connections
- Other vendors
What is checked
Rules that reference this variable, with their severity and what each rule detects:
- WARNING
cn_001: Increase max_connections if legitimate clients are being refused. Also investigate connection pooling and wait_timeout to reduce connection count. - INFO
cn_002: Reduce max_connections to ~2x your peak usage to save memory. Each connection reserves sort_buffer, join_buffer, read_buffer, etc. - WARNING
cn_006: Reduce max_connections or innodb_buffer_pool_size to keep total possible memory under 80% of available RAM. Use tools like mysqlcalculator.com for precise estimation.
Tuning guidance
- Recommended actions:
- Increase max_connections if legitimate clients are being refused. Also investigate connection pooling and wait_timeout to reduce connection count.
- Reduce max_connections to ~2x your peak usage to save memory. Each connection reserves sort_buffer, join_buffer, read_buffer, etc.
- Reduce max_connections or innodb_buffer_pool_size to keep total possible memory under 80% of available RAM. Use tools like mysqlcalculator.com for precise estimation.
- Trade-offs: Validate recommendations against monitoring, workload profiles, and vendor documentation before making changes.
Example
SET GLOBAL max_connections = 500;
-- Caution: each connection consumes memory
Always validate on a non-production instance first. Use SET PERSIST (MySQL 8.0+) for changes that should survive restarts.