mysql数据库连接错误


9

我的应用程序需要非常频繁地连接到另一台机器上的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以及对该错误的评论http://bugs.mysql.com/bug .php?id = 28359

如您所见,有很多中断的连接:

mysql>显示全局状态,如“ Aborted_connects”;
+ ------------------ + ------- +
| 变量名| 价值|
+ ------------------ + ------- +
| Aborted_connects | 2540 |
+ ------------------ + ------- +

我将超时从5秒增加到15秒:

mysql>显示类似“ connect_timeout”的变量;
+ ----------------- + ------- +
| 变量名| 价值|
+ ----------------- + ------- +
| connect_timeout | 15 |
+ ----------------- + ------- +

但这没有帮助。有什么建议如何调试吗?平均而言,它必须尝试连接5次才能正常工作,这使数据库交互变得非常缓慢。

我还没有尝试在应用程序的生存期内保持连接打开状态,这样会更好吗?如何防止连接关闭?

如果它可以帮助解决问题的计算机是Windows 7 32位,而mysql服务器在Debian Linux上。


我知道这只是一个绷带,但是错误报告URL确实指出:“我已通过将connect_timeout全局变量增加到30秒来解决该问题。” 您想尝试更高的价值吗?
JoseK 2010年

1
冷舒适,但这是一个精心编写的问题。埃里克·雷蒙德(Eric S. Raymond)文章的精彩文章... +1,祝您好运。
gWaldo 2010年

@JoseK我当然可以试试,但我怀疑这会带来多大的改变,因为我没有看到改善的5至15增加
Zitrax

如果将值设置为0,这是不设置限制的变量之一吗?
pjmorse 2010年

1
您是否肯定机器之间没有某种连接问题,也许是网络问题?
华纳2010年

Answers:


2

查看所有错误详细信息,报告我怀疑这里存在网络或客户端问题。某种情况是损坏或对mysql数据增加了太多延迟。

在一个清晰的网络上,进行wireshark跟踪并检查会话的状态。确保没有流量整形在任何地方进行。似乎仅是一个64位问题,因此检查32位版本只是为了确保它是相同的问题。检查一下Windows XP的包装盒-M $对Vista上的网络堆栈做了一些时髦的事情,使它变得糟透了-花费时间!Vista和Win7机器的网络问题无止境!

如果您确实要管理wireshark轨迹,请粘贴并放置链接,因为我们都希望我能看到它。


“似乎是64位问题”是什么意思?这是32位安装。抱歉,我提到过Vista,这是Win7,说明已更正。
Zitrax

我对使用Wireshark进行调试不是很熟悉。但是有些事情对我来说很奇怪,有一些带红色标记的RST数据包和TCP重新传输,并且某些数据包的时间是负数,例如-257.3秒。
Zitrax

您是否可以完全使用其他开关并重新测试?如果您有一个不同的品牌?如果您可以粘贴或压缩并使
Wireshk

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.