我正在开发一个使用C#和MySql的应用程序(存储过程)。在运行该应用程序一段时间后,它显示连接太多。然后我使用命令SHOW STATUS WHERE variable_name = 'Threads_connected';
和SHOW PROCESSLIST;
来调试问题。似乎每次我在我的应用程序上运行任何操作时,mysql会创建新线程,并将线程标记为睡眠。此外,线程没有按时关闭。我发现了一个解决方案,即设置mysql环境变量如下。mysql中连接错误太多
interactive_timeout=180
wait_timeout=180
- 这个解决办法有,因为它会自动杀死连接的应用程序产生任何影响?如果数据从数据库获取时间有点长,会发生什么?
- 我预计一次有1000个流量巨大的流量。那么mysql中的最大连接数应该是多少?这会降低mysql的性能吗?
[注:有一个在我的应用程序没有问题,因为我已经关闭了所有的MySQL连接]
在此先感谢。
你的笔记听起来像你实际上在你的连接上调用'Close'。你有没有想过使用块?这比你自己处理所有可能的异常情况要容易得多。 – nvoigt 2014-09-23 05:41:48
是的,我正在使用'Close'。如果没有任何作用,我会试一试。 – Redone 2014-09-23 05:43:46
手动调用'Close'容易出错,因为异常或正常流量控制可能会绕过您的关闭呼叫。命令和读取器也可以与'使用'块一起使用,所以当发生异常时你不需要关注资源管理。 – nvoigt 2014-09-23 05:45:41