2012-09-12 79 views
1

我试图解决使用MySQL连接器打开连接时MySQL的响应时间很长的问题。使用MySQL连接器打开MySQL连接的速度很慢.net

我已经使用--skip-name-resolve安装了运行在Azure VM(Server 2008)上的MySQL 5.5,并且数据库用户帐户的主机限制使用了IP地址。我在Azure上运行的WCF服务中使用最新的MySQL连接器(在美国东部的相同位置,我一直使用试用订阅,没有关联集)。我在WCF服务中的连接字符串使用托管MySQL的VM的内部IP地址作为服务器参数值。我也有“pooling = true;最小池大小= 2;”以防万一(我也试过没有这些参数)。

一旦服务运行并处理请求很不错(即使每个查询结果都是唯一的,因此没有被缓存),在追踪WCF查询响应时间时,我对MySQL的性能没有任何问题,经常打。

但巨大的问题,我一直没能破解是才获得到数据库的调用后连接到MySQL的开放时间长度已经进行了约3或4分钟。如果几分钟内没有进行数据库调用,则需要8或9秒或更长时间才能再次打开连接。我包装了实际的“conn.open();”跟踪调用前后的跟踪语句,这是我在几分钟不活动后一次又一次地看到的行为。顺便说一下,我也尝试过(并且仍在使用)“使用”连接处理风格,以确保MySQL连接器管理连接池。

如: 使用(VAR康恩=新的MySqlConnection(Properties.Settings.Default.someConnectionString)){...语句...}

我觉得我已经就这一个死胡同,因此任何建议将不胜感激。

+0

我使用Enterprise Library Community来管理MySQL Connector /。我获得了快速的时间 –

+0

嗨Alberto,我已经运行了一些更多的测试,并且只有当应用程序在Azure上运行并连接到MySQL(也可以在虚拟机或远程服务器上的Azure上)时才会出现缓慢。在Azure上连接到SQL Server速度很快。在我去检查企业库之前检查一下,你是否在Azure上运行?看来Azure或MySQL连接器正在删除连接池。 – AnthonyC

回答

2

我可以解释你的问题“在没有对数据库调用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,并且来自该团队的人员将为您提供适当的答案。

+0

感谢AvkashChauhan确认我不会发疯! :) 我也发布了这个问题在他们的虚拟机为Azure论坛。我是一个SQL Server的男孩,并且只与MySQL一起工作以与客户网站兼容。我希望现在能够让我们切换到SQL Server。 – AnthonyC

+0

@AnthonyC你能找到这个解决方案,我面临一个非常类似的问题http://stackoverflow.com/questions/24706027/mysql-data-mysqlclient-mysqlconnection-open-taking-a-long-time – PUG