Ubuntu Mariadb如何进行资源限制
导读:Ubuntu 上 MariaDB 资源限制实用指南 一 系统级限制 调整 MariaDB 服务的文件句柄与进程数限制,解决如 “Could not increase number of max_open_files to more tha...
Ubuntu 上 MariaDB 资源限制实用指南
一 系统级限制
- 调整 MariaDB 服务的文件句柄与进程数限制,解决如 “Could not increase number of max_open_files to more than 1024” 的告警,并支撑更高的连接与表缓存需求。
- 操作步骤:
- 创建服务覆盖目录与文件
sudo mkdir -p /etc/systemd/system/mariadb.service.d
sudo tee /etc/systemd/system/mariadb.service.d/limits.conf <
<
‘EOF’
[Service]
LimitNOFILE=10000
可选:提高进程数限制
LimitNPROC=65535 EOF - 重新加载 systemd 并重启 sudo systemctl daemon-reload sudo systemctl restart mariadb
- 验证 sudo systemctl status mariadb mysql -e “SHOW VARIABLES LIKE ‘open_files_limit’; ”
- 创建服务覆盖目录与文件
sudo mkdir -p /etc/systemd/system/mariadb.service.d
sudo tee /etc/systemd/system/mariadb.service.d/limits.conf <
<
‘EOF’
[Service]
LimitNOFILE=10000
- 说明:当 open_files_limit 受限时,MariaDB 会自动下调 max_connections 与 table_cache,因此提升 LimitNOFILE 后,连接上限才能稳定生效。
二 内存与连接数限制
- 内存关键变量与经验值
- InnoDB 缓冲池:仅使用 InnoDB 时,建议将 innodb_buffer_pool_size 设为可用内存的约 70%;仅使用 MyISAM 时,将 key_buffer_size 设为约 20% 可用内存(MyISAM 场景)。两者不要同时过大。
- 连接与会话开销:每个线程有栈与若干会话级缓冲,连接越多,内存占用线性增加。盲目把 max_connections 设得很高,会放大内存与文件句柄压力,应结合业务并发与实例规格评估。
- 配置与验证
- 永久配置(编辑 Ubuntu 常见路径:/etc/mysql/mariadb.conf.d/50-server.cnf 或 /etc/mysql/my.cnf,[mysqld] 段): [mysqld] innodb_buffer_pool_size=1G key_buffer_size=16M max_connections=200 table_open_cache=2000
- 动态查看/调整(重启后失效): mysql -e “SHOW VARIABLES LIKE ‘innodb_buffer_pool_size’; ” mysql -e “SHOW VARIABLES LIKE ‘max_connections’; ” mysql -uroot -p -e “SET GLOBAL max_connections=300; ”
- 提示:调小 per-connection 缓冲(如 sort_buffer_size、read_buffer_size 等)能降低单连接内存占用,但应以实际查询特征为准,避免性能劣化。
三 连接与空闲超时限制
- 控制长连接与空闲连接,避免连接风暴与资源长期占用。
- 常用变量与建议
- max_connections:全局最大连接数(配合系统句柄限制与内存一起评估)。
- max_user_connections:限制单个用户的并发连接数,用于多租户或应用账号隔离。
- wait_timeout / interactive_timeout:空闲连接超时关闭时间,防止大量 SLEEP 线程堆积。
- 示例(在 [mysqld] 段): [mysqld] max_user_connections=100 wait_timeout=600 interactive_timeout=600
- 验证: mysql -e “SHOW VARIABLES LIKE ‘max_user_connections’; ” mysql -e “SHOW VARIABLES LIKE ‘wait_timeout’; ”
四 监控与容量规划
- 文件句柄压力:关注状态变量 Opened_files / Uptime,若该值持续大于 5,说明表/文件频繁打开,应适当增大 table_open_cache;若远小于 1,可适当减小以减少开销。
- 连接使用率:结合 Max_used_connections 与 max_connections 观察峰值与余量,避免“连接不够用”或“过度配置”。
- 配置生效顺序:先确保系统级句柄限制足够,再调整 MariaDB 内存与连接参数,最后用监控指标持续验证与微调。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Mariadb如何进行资源限制
本文地址: https://pptw.com/jishu/753315.html
