問題描述:
MySql.Data.MySqlClient.MySqlException (0x80004005): error connecting: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
在 MySql.Data.MySqlClient.MySqlPool.GetConnection()
在 MySql.Data.MySqlClient.MySqlConnection.Open()
在 _Default.Button1_Click(Object sender, EventArgs e)
處理過程:
部署在雲服務器上的程序出現這個問題后,網上查查讓修改mysql的最大連接數量,首先是查到當前MySql最大的連接數量還是默認的,然后在my.ini中改成了1000個,重啟后生效了,重啟IIS后好了。
--下面是mysql查看當前允許最大連接數的語句
然后過了一段時間又不行了,然后找程序里的BUG,看看哪里沒有關閉數據庫連接,結果沒找到,重啟了IIS后又好了一段時間(后來發現實際就是程序的原因)。
--下面是mysql查詢當前數據庫連接情況的語句,可以看出連接數遠遠少於1000
然后過了一段時間又不行了,發現出問題的時候其他數據庫訪問還是正常的,然后就搜了一下怎么看mysql的所有連接信息,主要是看每個數據庫的連接數量。
然后就發現問題了,有些連接的時間特別長[TIME 字段],我開始找什么情況下會多一條不關閉的連接,這樣找BUG果然很好找,問題得到了階段性的處理。