MySQL ERROR Got an error reading communication packets
介绍
经常会在错误日志中看到这个报错,首先我们可以从show GLOBAL status like '%Aborte%';里面看看两种错误连接的数量,以下是复制官方文档的解释。
Aborted_connects
If a client is unable even to connect, the server increments the Aborted_connects
status variable. Unsuccessful connection attempts can occur for the following reasons:
-
A client attempts to access a database but has no privileges for it.
-
A client uses an incorrect password.
-
A connection packet does not contain the right information.
-
It takes more than
connect_timeout
seconds to obtain a connect packet. See Section 5.1.4, “Server System Variables”.
If these kinds of things happen, it might indicate that someone is trying to break into your server! If the general query log is enabled, messages for these types of problems are logged to it.
对于Aborted_connects错误的大概原因有:
1.客户端连接一个没有授权的数据库
2.密码错误
3.连接包信息错误
4.连接超时(默认10s)
Aborted_clients
If a client successfully connects but later disconnects improperly or is terminated, the server increments the Aborted_clients
status variable, and logs an Aborted connection message to the error log. The cause can be any of the following:
-
The client program did not call
mysql_close()
before exiting. -
The client had been sleeping more than
wait_timeout
orinteractive_timeout
seconds without issuing any requests to the server. See Section 5.1.4, “Server System Variables”. -
The client program ended abruptly in the middle of a data transfer.
Other reasons for problems with aborted connections or aborted clients:
-
The
max_allowed_packet
variable value is too small or queries require more memory than you have allocated for mysqld. See Section B.5.2.10, “Packet Too Large”. -
Use of Ethernet protocol with Linux, both half and full duplex. Some Linux Ethernet drivers have this bug. You should test for this bug by transferring a huge file using FTP between the client and server machines. If a transfer goes in burst-pause-burst-pause mode, you are experiencing a Linux duplex syndrome. Switch the duplex mode for both your network card and hub/switch to either full duplex or to half duplex and test the results to determine the best setting.
-
A problem with the thread library that causes interrupts on reads.
-
Badly configured TCP/IP.
-
Faulty Ethernets, hubs, switches, cables, and so forth. This can be diagnosed properly only by replacing hardware.
对于 Aborted_clients
的原因大概有:
1.客户端没有执行mysql_close()关闭
2.由于连接一直没有关闭导致时间超过wait_timeout
or interactive_timeout这两个变量的值(这两个变量的超时时间是8小时)
3.客户端在程序执行过程中结束
4.max_allowed_packet包设的过小
5.网络原因
6.线程bug等
总结
备注: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。 《欢迎交流讨论》 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端