您的位置:首页 > 数据库 > MySQL

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,恢复正常
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息