Mysql启动自动设置max_connections为其他值
2015-07-21 17:16
676 查看
背景
有同学反应,产品连不上,登陆到服务器,发现连接数不够了。接着先重启mysql,发现在mysql启动的时候会报Waring
Warning Changed limits: max_open_files,max_connections=214
处理
/etc/security/limits.conf 中设置* soft nofile 102400
* hard nofile 102400
登出服务器,重新登录。
重启mysql,问题解决
过程
第一时间想到mysql配置得太小,于是找到配置,发现配置的max_connections=5000,明显不是配置问题Linux系统上默认的open files数目为1024, 有时应用程序会报Too many open files的错误,是因为open files 数目不够。
ulimit -a看下,果然是1024
疑问
为什么open files会决定max_connections大小?max_connections和table_open_cache在系统上对应的是OS的文件句柄(fd),如果这两个值增加,那么相应的也要增加OS的max_open_files设置,不然mysql就会根据max_open_files的值,去主动调整这两个设置。
参考:http://dev.mysql.com/doc/refman/5.5/en/table-cache.html
2015-07-22记
参数调整后,今天出现了客户端连接池用完。在数据库执行
show processlist;发现大量的query end的process:
| 167 | paas | xxxxxx | edas | Query | 60400 | query end | INSERT INTO CON_METRIC (APP_ID, ECU_ID, MON_TYPE, MON_DATA, CREATE_TIME) VALUES ('ead5f836-c4c7-4ced |
insert、update、都有,状态都是query end。
查看数据库,cpu/内存都是正常。
发现磁盘满了,最后定位到bin-log日志导致两百多G被用完。删除掉早期的bin-log,恢复正常
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志
- MySQL 安全事宜
- MySQL 备份与恢复
- MySQL 优化
- MySQL 数据类型