MySQLConnector不断达到最大连接数(共4个)

时间:2017-04-26 13:35:37

标签: c# mysql asp.net asp.net-core mysql-connector

我在 Azure 上使用 ClearDB ,共有4个连接可用。 ASP.NET Core 1.1
此外,我正在使用 Ngrok 来公开运行我的API的本地主机 当我发出同步请求时,我的 API 有时会使用相同的连接,但会在短时间内创建一个新连接,让旧的连接保持休眠状态。
它们需要很长时间才能消亡,我最终会使用同一个用户使用相同的远程主机IP建立4个连接,但每个连接的端口不同。
根据 ClearDB 门户网站,它们未被使用并具有等于“睡眠”的命令 我认为 Ngrok 可能导致这个问题。但是,当我尝试调用MySqlConnection.ClearPool(Connection);我的API请求永远不会完成时,他们会永远停留在该命令上 我也会在每个请求结束时致电CloseDispose 有什么想法吗?

function1() {
    Connection.Open();

    var Cmd = Connection.CreateCommand() as MySqlCommand;
    Cmd.CommandText = "SELECT * FROM users WHERE senderID=@SenderID";
    Cmd.Parameters.AddWithValue("@SenderID", UserData.SenderID);
    var result = Cmd.ExecuteReader();
    if(result.HasRows) {
        result.Read();
    }
    Cmd.Connection.Close();
    Cmd.Dispose();
    result.Dispose();
}

public bool DoesUserExist() {
    var Cmd = Connection.CreateCommand() as MySqlCommand;
    Cmd.CommandText = "SELECT senderID FROM users WHERE senderID=@SenderID";
    Cmd.Parameters.AddWithValue("@SenderID", UserData.SenderID);
    var result = Cmd.ExecuteReader();
    bool UserExisits = result.HasRows;
    Cmd.Connection.Close();
    Cmd.Dispose();
    result.Dispose();
    return UserExisits;
}

function2() {
    var Cmd = Connection.CreateCommand() as MySqlCommand;
    long Time = DateTimeOffset.Now.ToUnixTimeSeconds();

    if(DoesUserExist()) {
        Cmd.CommandText = "UPDATE users SET lastcontact=@time, contextS=@contextS WHERE senderID=@SenderID";
    } else {
        Cmd.CommandText = "INSERT INTO users(senderID, contextS, lastcontact) VALUES (@SenderID, @contextS, @time)";
    } 
    Cmd.Parameters.AddWithValue("@contextS", UserData.Context);
    Cmd.Parameters.AddWithValue("@time", Time);
    Cmd.Parameters.AddWithValue("@SenderID", UserData.SenderID);
    Cmd.ExecuteNonQuery();
    Cmd.Connection.Close();
    Cmd.Dispose();

    Connection.Close();
    Connection.Dispose();
}

0 个答案:

没有答案