我试图解决使用.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,该团队中的某人将为您提供适当的答案.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。