2012-02-20 53 views
5

這一個是殺了我。我們在MySQL數據庫上有一個ASP.NET/Mono應用程序。幾個月來,我們一直困擾着一個完全隨機但一致的「無法連接到任何指定的MySQL主機」。我絕不是MySQL專家,我希望這是一件愚蠢的事情。MySql *完全隨機*無法連接到任何指定的MySQL主機

具體細節:
的MySQL 5.5.17
MySQL連接/淨6.4.4
單聲道2.10.8
MonoDevelop的2.8.6.5

連接字符串:SERVER =本地主機,3306; DATABASE = XXX ; UID = xxx; PWD = xxx; CONNECTION TIMEOUT = 90; Encrypt = false;

Max_connections設置爲150.從未有超過5個連接,並且它們都是活動的(可能是由於池)。

  • 該應用程序是C#ASP.NET 3.5。在Windows/IIS上運行多年,堅如磐石。九個月前,我們的市場導致我們脫離Windows,所以我們(很容易就可以添加)將整個事情轉移到Mono/Apache。

  • 這個問題只發生在單聲道方面,但這是至關重要的,因爲我們已經退休了我們的Windows支持。

  • 平均每小時發生10次左右,但間距變化很大。

  • 問題已目睹了以下配置:

Ubuntu的11/Apache2的/是mod_mono
OSX獅子/ Apacke2 /是mod_mono
Ubuntu的11/xsp2/MonoDevelop的調試服務器
OSX獅子/ xsp2/MonoDevelop的調試服務器

  • 搞砸與keepaliv e,wait_timeout,connectionreset等無濟於事。時間似乎沒有影響。 conn.open上的錯誤是即時的 - 不是在任何連接超時之後。

  • 這是一個線索 - 應用程序絕對不會運行Pooling = false。幾乎每個連接嘗試失敗。當然,我想集中,但我不知道爲什麼它不工作。

  • 該應用程序內置有「心跳」(數據庫中的用戶會話) - 每2分鐘一次。

  • 最令人發狂的是?它絕對不能在運行環境中按需複製 - 它是隨機的。我已經檢查過查詢大小,執行時間等。

  • 在一種情況下,我可以做到這一點:在首次啓動Ubuntu服務器或OSX時,Mono第一次使它成爲第一次連接到MySQL - 它那麼會發生。之後,這是任何人的猜測。

+0

max_connections限制如何?你可能會在不同時間達到最大允許值。 – 2012-02-20 23:29:42

+0

似乎不太可能,因爲它發生在第一次連接 – DNA 2012-02-20 23:35:16

+0

對於一個好問的問題+1,但我認爲它會在serverfault.com上更好 – 2012-02-20 23:43:31

回答

0

好吧,這是舊的,但我失去了這麼多時間在這,我分享這個救生文章中,我終於發現:Getting Mono and Mysql to play nice together

而且我總結的情況下,鏈接最終在404有朝一日:必須定義連接字符串的每個變量。所以,是的,這包括端口,我從來沒有必須在我以前的生活中連接字符串中定義。

對我來說,它解決了這個問題。

相關問題