gpt4 book ai didi

c# - ADO.NET 需要 >5 秒才能以 ASP.NET 形式打开 MySql 连接

转载 作者:行者123 更新时间:2023-11-29 11:03:23 24 4
gpt4 key购买 nike

希望您能在这里帮助我提出一些建议。

我发现,当我在 Web 主机服务器 (Vidahost) 上托管一个简单的 ASP.NET 表单时,调用 Open() 连接时会出现 5 秒的延迟。

我用来缩小这个问题范围的代码如下,使用 asp.net 跟踪,我看到跟踪中出现的“打开连接”和“新 SQL 命令”调试喷涌之间有一致的 5 秒延迟,暗示 .Open() 调用花费的时间太长。

Vidahost 善意地进行了 Wireshark 跟踪并报告:MySQL 发送了服务器问候语。这会被 Web 服务器确认,大约需要 5 毫秒 然后 Web 服务器似乎会等待大约 5 秒,然后才启动登录请求

如果我在家中的笔记本电脑上运行完全相同的代码,使用 MySql 数据库的外部 IP 地址,整个请求将在 ~0.3 秒内完成!

我正在使用最新的 ADO.NET 驱动程序 (v.6.9.9),该驱动程序会复制到我的托管网站。

任何人都可以帮忙解释一下这方面的可能性吗?我们可以进行更高级的跟踪来深入了解正在打开的连接吗?

我已经查找过此类性质的其他问题,主要问题是关于 MySQL 服务器反向 DNS 查找需要时间,但我认为这与这里无关 - 特别是因为它可以完美地从我的服务器运行家里的笔记本电脑。

以下代码位于后面代码的Page_Load中。

try
{
HttpContext.Current.Trace.Write("Setup connection with connection string");
connMySql = new MySqlConnection(strConnectionString);

HttpContext.Current.Trace.Write("Open Connection");
connMySql.Open();

HttpContext.Current.Trace.Write("New SQL Command");
MySqlCommand cmdMySql = new MySqlCommand();
cmdMySql.Connection = connMySql;

HttpContext.Current.Trace.Write("Server: " + connMySql.DataSource.ToString());
string sql = "";

HttpContext.Current.Trace.Write("Setup SQL Query");
sql = "SELECT * FROM tblret";
cmdMySql.CommandText = sql;

HttpContext.Current.Trace.Write("Call DB");

MySqlDataReader dr = cmdMySql.ExecuteReader();

HttpContext.Current.Trace.Write("DB Returned");

int recordsReturned = 0;

while (dr.Read())
recordsReturned++;

HttpContext.Current.Trace.Write("Parsed " + recordsReturned.ToString() + " records");
textArea.Text = "Parsed " + recordsReturned.ToString() + " records";
}
catch (Exception ex)
{
HttpContext.Current.Trace.Write("Error: " + ex.Message);
}

谢谢,弗雷泽

最佳答案

您应该在完成连接后立即释放/关闭连接。因此,您可以使用 using 语句来确保即使发生错误也会将其关闭:

using(var connMySql = new MySqlConnection(strConnectionString))
{
connMySql.Open();
// ...
// connMySql.Close(); not needed due to the using
}

我怀疑您正在重用连接实例。这不是一个好主意,因为它阻止了 ADO.NET 使用连接池。如果它是静态的,所有请求都将共享相同的内容。

关于c# - ADO.NET 需要 >5 秒才能以 ASP.NET 形式打开 MySql 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41826300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com