应用服务连接数据库后,mysql的最大连接数从3000突然变为214,出现Too many connections的错误。
问题
配置参数中,max_connections=3000,数据库启动后连接数也显示3000。但是当应用程序连接后,max_connections将自动变为214。

开启general log后发现错误,受限于max_open_files,数据库修改了max_connections和table_open_cache的值。

执行ulimit -a查看,果不其然,open files显示为1024。最后了解到操作系统升级openssh后,出现了限制参数不生效问题。
分析
升级openssh后,centos修改限制参数不生效了。
vi /etc/security/limits.conf
* soft nofile 10240
* hard nofile 65536
这是因为limits.conf是由PAM模块pam_limits.so来加载,通过ssh访问会调用sshd PAM。更新openssh后没有启用PAM(即UsePAM no),所以出现限制参数不生效现象。
解决方法
如上分析,本次数据库故障是操作系统引发,建议回退openssh版本,或者修改UsePAM yes。
最后修改时间:2024-06-07 17:36:51
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




