我的经验是使用 LAMP 堆栈,而不是 Windows 上的 .NET,但是我曾被赋予尝试调试缓慢站点的任务,并且在用 Google 搜索所有我能想到的方法后,我陷入了死胡同。
这就是问题所在: 每次向数据库发送 SQL 调用时,连接需要大约 1 秒钟。我想指出的是,它永远不会出错,只是需要很长时间。
该机运行的是 Win 2008 R2,具有充足的 CPU 和 RAM、IIS 7.5,数据库是本地 mysql 5.1.66。
web.config 的 connectionStrings 标签内是
<add
name="nameOfConnectionString"
connectionString="Driver={MySQL ODBC 5.1 Driver};
Server=localhost;
Database=db_name;
Pooling=True;
Option=3;
User ID=user_name;
PASSWORD=pw;"
providerName="System.Data.Odbc"
/>
需要注意的是,我尝试过使用和不使用池化,效果都是一样的
为了确保万无一失,我今天从 mysql 网站重新安装了 ODBC 5.1 驱动程序。我还远程控制了该机器并从 MySQL Workbench 运行了一些查询,所有执行时间都恰到好处,所以我很确定这不是 mysql 安装的问题。
下一步该怎么做才能解决这个问题?我应该注意什么?
更新
当 connectionString 中的 localhost 被替换为盒子的全局 ip 地址时,问题得到解决。什么会导致 localhost 的名称查找花费一秒钟?