簡體   English   中英

如何在ASP.NET上找出max_user_connections | MySQL應用程序?

[英]How can i figure out a max_user_connections on ASP.NET | MySql application?

去年,我開發了一個ASP.NET應用程序MVP模型。 該網站不是很大(每天約有9000次觀看)。 它是一個普通的應用程序,僅顯示文章,支持調度(通過日期時間),投票和視圖,節和類別。

從那時起,我以相同的動機創建了15個以上的站點(數據庫機制以相同的邏輯構建)。

我所做的是:每次收到請求時,我都必須從數據庫中獲取文章,欄目,類別,視圖和投票,並將其顯示給用戶……就像所有其他Web應用程序一樣。

我的數據庫對象像上面這樣:

public class MyObjectDatabaseManager{
       public static string Table = DBTables.ArticlesTable;
       public static string ConnectionString = ApplicationManager.ConnectionString;
       public bool insertMyObject(MyObject myObject){/*.....*/}
       public bool updateMyObject(MyObject myObject){/*.....*/}
       public bool deleteMyObject(MyObject myObject){/*.....*/}
       public MyObject getMyObject(int MyObjectID){/**/}
       public List<MyObject> getMyObjects( int limit, int page, bool OrderBy, bool ASC){/*...*/}
}

每當我想與數據庫進行通信時,我都會執行上述操作

   MySqlConnection myConnection = new MySqlConnection(ConnectionString);
   try
      {
       myConnection.Open();
       MySqlCommand cmd = new MySqlCommand(myQuery,myConnection);
       cmd.Parameters.AddWithValue(...);
       cmd.ExecuteReader(); /* OR */ ExecuteNonQuery();
   }catch(Exception){}
   finally
    {
        if (myConnection != null)
        {
            myConnection.Close();
            myConnection.Dispose();
        }
    }

兩個月后,我遇到了麻煩。

性能開始下降,數據庫開始返回錯誤:max_user_connections

然后我想..“讓我們緩存頁面”,並開始為頁面使用Output緩存。 (不是一個非常復雜的好主意。)

12個月后,我的朋友告訴我創建“實時”文章...可以立即更新的文章。 (從輸出緩存中...)

然后我想到:“為什么要使用緩存?joomla等**不會”

所以...我刪除了神奇的“輸出緩存”指令...從那時起,我再次遇到相同的問題... MAX_USER_CONNETCTIONS! :/

我做錯了什么?

我知道我的代碼與數據庫進行了大量通信,但是...連接池?

對不起我的英語不好

請...幫助:/我不知道如何解決:/

謝謝。 遇到了共享托管數據包 *我的數據庫大小超過60mb * 我在某些表(如文章)中有6000多行 *我的托管服務提供商為我提供了25個與數據庫的連接(我認為數量很大)*

您的代碼對我來說看起來不錯,盡管從樣式角度來看,我更喜歡“使用”而不是“ try / finally / Dispose()”。

要檢查的一件事是確保代碼中的所有地方使用的連接字符串都是相同的。 大多數數據庫驅動程序基於比較連接字符串來建立連接池。

您可能需要在mysql配置中增加max_connections變量。

看到:

http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html

實際上,Max#/ connections是操作系統級別的配置。

例如,在NT / XP下,可以在注冊表中的HKLM,...,TcpIp,Parameters,TcpNumConnections下對其進行配置:

http://smallvoid.com/article/winnt-tcpip-max-limit.html

更重要的是,您希望最大程度地打開新連接所需的“臨時端口”數量:

http://www.ncftp.com/ncftpd/doc/misc/ephemeral_ports.html

  • 視窗:

    HKEY_LOCAL_MACHINE \\ SYSTEM \\ CurrentControlSet \\ Services \\ Tcpip \\ Parameters在“編輯”菜單上,單擊“添加值”,然后添加以下注冊表值:

    值名稱:MaxUserPort數據類型:REG_DWORD值:65534

  • Linux:

    須藤sysctl -w net.ipv4.ip_local_port_range =“ 1024 64000”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM