我有一个Rails 2.3应用程序,它保持了太多的MySQL连接。在不到一天的时间内(约为400rpm),一个进程对我们使用的两个mysql服务器有83个已建立的连接。
我们使用的是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
。