私は書き留めているMySQL/PHPサイトを実行するために、MediaTempleのグリッドサーバ(共有/グリッドホスティング)を使用しています。私のMySQL接続を閉じていないことに気づき、サイトにエラーが発生しました。共有ホストでMySQL接続を終了しますか?
"Too Many Connections"
手動で接続を閉じるにはどこにでもログインできません。
スクリプトやその他のコマンドを使用して開いている接続を閉じる方法はありますか。
私はちょうど待つべきですか?
私は書き留めているMySQL/PHPサイトを実行するために、MediaTempleのグリッドサーバ(共有/グリッドホスティング)を使用しています。私のMySQL接続を閉じていないことに気づき、サイトにエラーが発生しました。共有ホストでMySQL接続を終了しますか?
"Too Many Connections"
手動で接続を閉じるにはどこにでもログインできません。
スクリプトやその他のコマンドを使用して開いている接続を閉じる方法はありますか。
私はちょうど待つべきですか?
MySQLにログインできない場合は、おそらくホスティングプロバイダに連絡して接続を強制終了する必要があります。
MySQLシェルを使用できる場合は、show processlistコマンドを使用して接続を表示し、次にkillコマンドを使用して接続を削除します。
残念ながら、SQL接続が邪魔になるというのは私の経験です。
PHPコードで接続を終了していることを確認してください。また、/etc/my.cnfで許可される最大接続数を増やすこともできます。
max_connections=500
最後に、あなたは、MySQLプロンプトにログインし、サーバーとのさまざまな統計情報を表示するshow status
またはshow processlist
を入力することができます。
その他すべてが失敗した場合は、サーバーデーモンを再起動すると永続的な接続がクリアされるはずです。
さて、あなたは今までの接続でこっそりすることができない場合は、私が」知らんが、あなたは時折Rubyで、中にこっそりことができれば、それは近くに次のようになります。あなたは、コマンドラインにアクセスできる場合
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"
十分な特権を持って、MySQLサーバーまたはApache(Apacheを使用していると仮定します)を再起動します。おそらく接続を開いたままにしているからです。接続を正常に終了した後、PHPからの永続的な接続を使用していないことを確認してください(一般的な見解では、パフォーマンスが大幅に向上することはないようですが、経験したように、場合によってはPostgreSQLを使用する場合と同様に、サイトの速度を大幅に低下させる可能性もあります)。
盲目的に接続を終了することは、この問題を解決する方法ではありません。まず、接続が不足している理由を理解する必要があります。あなたのmax_connections設定が、最大/予想ユーザーの数と正しく一致するように選択されていますか?あなたは本当にそれらを必要としないときに永続的な接続を使用していますか?