连接错误到MySQL数据库

我的应用程序需要频繁地连接到另一台机器上的mysql数据库。 但是,我经常在连接上发生错误; 我通常可以最终连接,但经过多次重试。 我得到的错误消息是:

Mysql.mysql(): Couldn't connect to SQL-server: Lost connection to MySQL server at 'reading authorization packet', system error: 2

我已经阅读了这里的信息: http : //dev.mysql.com/doc/refman/5.0/en/error-lost-connection.html以及对bug的评论http://bugs.mysql.com/bug .php?id = 28359 。

你可以看到有相当多的中断连接:

  mysql> SHOW GLOBAL STATUS LIKE'Aborted_connects';
 + ------------------ + ------- +
 | variables名| 值|
 + ------------------ + ------- +
 |  Aborted_connects |  2540 | 
 + ------------------ + ------- + 

我把超时时间从5秒增加到了15秒:

  mysql>显示variables像'connect_timeout';
 + ----------------- + ------- +
 | variables名| 值|
 + ----------------- + ------- +
 |  connect_timeout |  15 | 
 + ----------------- + ------- + 

但这并没有帮助。 任何build议如何debugging呢? 当数据库平均在连接5次之前尝试连接时,会使数据库交互非常慢。

我还没有试图保持连接在应用程序的生命周期中打开,那会更好吗? 如何防止连接closures?

如果它帮助有问题的计算机是Windows 7 32位,而MySQL服务器在Debian Linux上。

仔细查看所有错误详细信息,我怀疑这里存在networking或客户端问题。 有些东西要么破坏,要么给mysql数据添加太多的延迟。

在一个清晰的networking上,做一个wireshark跟踪并检查对话是什么样的。 确保任何地方都没有stream量整形。 似乎只是一个64位的问题,所以检查一个32位版本,以确保它是同样的问题。 检查一个Windows XP的盒子 – M $做了一些时髦的东西到Vista上的networking堆栈,这使得它有点时间! 我们没有与Vista和Win7机器的networking问题的结束!

如果你确实pipe理一个wireshark跟踪请pastebin和链接,因为我们都想看看我的想法。

最后,这是由于机器上一个普遍的networking问题。 该解决scheme发现在: Windows 7上的networking性能问题