我的网络应用程序出现连接数过多错误:http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html
因此,我想连接到数据库以便show full processes/g
调试代码。我使用以下 CLI 命令:
mysql -h domain.eu-west-1.rds.amazonaws.com -P 3306 -u username -p
我使用的用户名是我启动实例时创建的主用户名。据我了解,mysql 始终保持一个连接可用,以允许具有 SUPER 权限的帐户进行连接,但是当我这样做时,我收到了太多错误响应。
查看配置,主用户名似乎只对数据库有超级权限,而对域没有超级权限,这是正确的吗?我还能如何登录 mysql 来调试服务器?
答案1
没错,RDS 不允许任何帐户拥有该SUPER
权限。这是 RDS 中一个不幸的限制。
不过,您的问题听起来好像可以通过增加实例的 RDS 参数组来“修复”(或至少解决)max_connect_errors
,这将导致 RDS 对来自您的 IP 的连接错误更具容忍度。
您的问题让我怀疑您是否有太多连接......或者太多错误。
如果出现错误,那么您可以尝试从不同的 IP 访问它,您可以使用清除计数器FLUSH HOSTS;
。
在参数组中设置log_warnings
= 2 将增加连接错误的日志记录量(错误日志可通过控制台获取),并且这可能帮助您查明导致主机错误计数累积的原因。
参数组更改将在可能的情况下“热”应用于服务器,但参数组旁边的“实例详细信息”屏幕将提示您应用更改是否正在等待、需要重新启动还是已完成(同步)。
如果问题只是“连接太多”,那么唯一的解决方案——如果您不能强制应用程序丢弃一些连接——就是重新启动实例并获取连接槽,并保持连接,以便您在问题再次出现时可以访问。