复现
Navicat Premium 16进行数据导出的时候,导出一半频繁报错 ” mysql lost connection to server during query“。单表数据在100w左右,连续关联了6张表,虽然需求很不合理,但能导出来就好。 单表字段也很多,平均30个左右。根据错误提示,mysql查询过程中丢失链接导致错误。
方法一 修改max_allowed_packet
经实践,修改该参数为512M之后,重启之后还是不能解决此问题。
方法二 调整net超时参数
innodb_read_io_threads = 16
innodb_write_io_threads = 16
net_read_timeout = 28800
net_write_timeout = 28800
下面是每个参数的解释:
innodb_read_io_threads = 16
:- 这个参数控制InnoDB存储引擎在执行读取I/O操作时使用的线程数量。
- 增加该值可以提高并发读取操作的性能,特别是在高负载情况下。
- 默认值通常是较小的数字,但是可以根据系统配置和负载情况进行调整。
innodb_write_io_threads = 16
:- 类似于
innodb_read_io_threads
,这个参数控制InnoDB存储引擎在执行写入I/O操作时使用的线程数量。 - 增加该值可以提高并发写入操作的性能,特别是在高负载情况下。
- 同样地,根据系统配置和负载情况,可以调整该参数的值。
- 类似于
net_read_timeout = 28800
:- 这个参数控制MySQL服务器在等待接收数据时的超时时间,单位为秒。
- 如果在规定的时间内没有收到来自客户端的数据,服务器将断开连接。
- 默认值通常是较小的时间,但是可以根据实际需求进行调整。设置一个较大的值可以防止短暂的网络问题导致连接断开。
net_write_timeout = 28800
:- 类似于
net_read_timeout
,这个参数控制MySQL服务器在等待发送数据时的超时时间,单位为秒。 - 如果在规定的时间内无法将数据发送给客户端,服务器将断开连接。
- 同样地,根据实际需求和网络环境,可以调整该参数的值。
- 类似于
调整之后可以导出数据。