あまりにも多くのMySQL接続を開いているRails 2.3アプリがあります。 1日も経たないうちに(〜400rpmで)、1つのプロセスに2つのmysqlサーバへの接続が確立されました。Rails MySQLが多すぎる接続
私たちはmysql2 gem(0.2.18)を使用しており、mysqlクライアントはmysql Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (i686) using readline 5.1
です。
どのようにこれらのリークが起こっているのかをトラブルシューティングできますか?私たちのテストでは、唯一の生産で唯一の接続をリークすることはできません。
MySQLでは、開いている接続を確認するためにshow processlist;
を実行できます。アプリサーバーでは、pidあたりの接続数をsudo netstat -ntp | grep 3306 | grep ESTABLISHED | awk '{print $7}' | sort | uniq -c | sort -n
でカウントできます。
83とは何ですか?あなたがパニックになっているのはそれが8300のようなものです。 – tadman
84のRailsアプリケーションがあり、私たちのmysqlサーバには最大2000の接続があります。したがって、すべてのRailsアプリケーションが23以上の接続を持つ場合、私たちは使い果たされます。私たちの解決策は現在、5時間ごとにレールアプリのインスタンスを再起動することです。 –
database.yml configに "wait_timeout:300"を追加して解決しました。これは、5分後に未使用のmysql接続を閉じます。 –