我正在使用MediaTemple的网格服务器(共享/网格托管)来运行我正在编写的一些MySQL / PHP网站,并注意到我没有关闭我的一个MySQL连接,这导致我的网站出错:< / p>
"Too Many Connections"
我无法在任何地方登录以手动关闭连接。
是否可以使用脚本或其他类型的命令关闭打开的连接?
我应该等一下吗?
答案 0 :(得分:1)
如果您根本无法登录MySQL,则可能需要联系您的托管服务提供商以终止连接。
如果可以使用MySQL shell,可以使用show processlist命令查看连接,然后使用kill命令删除连接。
根据我的经验,不幸的是,挂起的SQL连接往往会保持这种状态。
答案 1 :(得分:1)
答案 2 :(得分:0)
确保使用PHP代码关闭连接。此外,您可以增加/etc/my.cnf中允许的最大连接数。
max_connections=500
最后,您可以登录mysql提示并输入show status
或show processlist
以查看服务器的各种统计信息。
如果所有其他方法都失败了,重新启动服务器守护程序应清除持久连接。
答案 3 :(得分:0)
好吧,如果你不能偷偷进入连接,我就不知道了,但是如果你偶尔可以偷偷溜进去,那么它将会接近:
require 'mysql'
mysql = Mysql.new(ip, user, pass)
processlist = mysql.query("show full processlist")
killed = 0
processlist.each { | process |
mysql.query("KILL #{process[0].to_i}")
}
puts "#{Time.new} -- killed: #{killed} connections"
答案 4 :(得分:0)
如果您可以使用足够的权限访问命令行,请重新启动MySQL服务器或Apache(假设您使用Apache)服务器 - 因为可能是保持连接打开。在您成功关闭连接之后,请确保您没有使用来自PHP的持久连接(一般意见似乎它不会产生任何显着的性能提升,但它有各种各样的问题 - 就像您经历过的那样 - 在某些情况下 - 比如使用它PostgreSQL - 它甚至可以显着减慢你的网站!)。