我正在尝试解决使用 MySQL Connector for .net 打开连接时 MySQL 响应时间很长的问题。
我已经使用--skip-name-resolve 安装了在 Azure VM(Server 2008)上运行的 MySQL 5.5,并且数据库用户帐户的主机限制使用 IP 地址。我在 Azure 上运行的 WCF 服务中使用最新的 MySQL 连接器 for .net(在美国东部的同一位置,我一直在使用试用订阅,没有关联集)。我在 WCF 服务中的连接字符串使用托管 MySQL 的 VM 的内部 IP 地址作为服务器参数值。我也有“pooling = true;Min Pool Size=2;” 以防万一(我也尝试过不使用这些参数)。
跟踪 WCF 时,一旦服务运行和处理请求,查询响应时间非常好(即使每个查询结果都是唯一的,因此没有被缓存),而且我对 MySQL 的性能没有任何问题,因为它经常受到打击。
但是我无法解决的一个大问题是在大约 3 或 4 分钟没有调用数据库后,连接到 MySQL Open 所需的时间很长。如果几分钟内没有进行数据库调用,则需要 8 或 9 秒或更长时间才能再次打开连接。我包装了实际的“conn.open();” 在调用之前和之后使用跟踪语句,这是我在几分钟不活动后一次又一次地看到记录的行为。
顺便说一句,我也尝试过(并且仍在使用)连接处理的“使用”风格,以确保 MySQL 连接器正在管理连接池。
例如:使用 (var conn = new MySqlConnection(Properties.Settings.Default.someConnectionString)) { ... statements ..}
我觉得我在这个问题上已经走到了死胡同,所以任何建议都将不胜感激。