c#-使用MySQL Connector for .net打开MySQL连接的速度非常慢

我试图解决使用.NET的MySQL连接器打开连接时来自MySQL的响应时间过长的问题.

我已经使用–skip-name-resolve安装了在Azure VM(Server 2008)上运行的MySQL 5.5,并且数据库用户帐户的主机限制正在使用IP地址.我在运行在Azure上的WCF服务中使用的是最新的MySQL连接器.net(在美国东区的同一位置,我一直在使用试用订阅,未设置相似性).我在WCF服务中的连接字符串使用托管MySQL的VM的内部IP地址作为服务器参数值.我也有“ pooling = true; Min Pool Size = 2;”以防万一(我也尝试过不使用这些参数).

跟踪WCF时,一旦服务运行并且处理请求就很好了(即使每个查询结果都是唯一的,因此也不会被缓存),查询响应时间就很好.如果MySQL经常受到打击,那么MySQL的性能也没有问题.

但是我无法破解的巨大问题是,在大约3或4分钟内未对数据库进行任何调用之后,获得与MySQL Open的连接所花费的时间.如果几分钟没有进行数据库调用,则需要8或9秒或更长时间才能再次打开连接.我包装了实际的“ conn.open();”在调用前后都有跟踪语句,这是我在几分钟不活动后一次又一次看到记录的行为.

顺便说一句,我也尝试(并且仍在使用)连接处理的“使用”样式,以确保MySQL Connector正在管理连接池.

例如.:
使用(var conn = new MySqlConnection(Properties.Settings.Default.someConnectionString)){…语句..}

我觉得我对此已经走到了尽头,因此任何建议将不胜感激.

最佳答案
我可以解释一下您的问题“在大约3或4分钟内未对数据库进行任何调用之后,获得与MySQL Open的连接所花费的时间.如果在几分钟内未进行数据库调用,则需要8或9秒或更多以再次打开连接.”为什么会发生:

Windows Azure网站使用热(活动)网站和冷(非活动)网站的概念,其中,如果网站没有活动连接,则网站进入冷态状态,表示主机IIS进程退出.与该网站建立新连接后,需要花费几秒钟的时间才能使网站准备就绪并可以正常工作.当您具有与此网站关联的MySQL后端时,由于IIS主机进程花了一些时间才能开始使用该服务,因此花更多的时间才能获得请求的服务.这就是在活动几分钟后响应时间较长的原因.

您可以查看以下演示文稿,以获取有关Windows Azure热(活动)和冷(不活动)网站的更多详细信息:
http://video.ch9.ms/teched/2012/na/AZR305.pptx

目前,我不确定并且不知道如何才能使网站始终保持热门状态,即使移至共享网站还是根本不可能.我可以建议您将问题写给Windows Azure WebSites Forum,该团队中的某人将为您提供适当的答案.

转载注明原文:c#-使用MySQL Connector for .net打开MySQL连接的速度非常慢 - 代码日志