关于max_allowed_packet这个值设置后自动重置问题

时间:2022-01-26 05:57:02
近期,因启动项目有个定时任务查询的sql结果太大,超过了mysql自带的缓存,报了如下错误:
关于max_allowed_packet这个值设置后自动重置问题

更改mysql 配置my.cnf  的max_allowed_packet 如下:
关于max_allowed_packet这个值设置后自动重置问题

重启后,max_allowed_packet 生效,结果如下:
关于max_allowed_packet这个值设置后自动重置问题



按道理这样改好了就不会有问题了,但是现在有个奇怪的问题,时隔几天, mysql配置 my.cnf关于 max_allowed_packet 的配置自动还原成1024 

分析原因:
1、数据库所在服务器内存不够用?
数据库所在服务器内存4G, 是配置的是1G 
2、mysql最大缓存设置16*1024*1024 ,超限了?
可是我设置的是10*1024*1024
3、通过命令更改的,mysql重启后会还原?
我直接改的配置文件,并且重启是生效的,只是说一段时间后自动还原了
4、修改mysql密码? 
修改之后,观察还是被重置还原了

现发mysql板块,希望有热心知情人员帮忙解答,万分感谢 关于max_allowed_packet这个值设置后自动重置问题

23 个解决方案

#1


相关资料和回复  ,但是没有效果

#3


人工置顶来了~

#4


http://bbs.csdn.net/topics/390983183? 
这里面的情况 每一个和你一致的? 不会是电脑被攻击了吧  关于max_allowed_packet这个值设置后自动重置问题    

#5



max_allowed_packet.意思是最大允许传输包的大小,也就是查询出结果后,把结果发送到客户端时,每个网络包的最大的大小。

如果你给mysql配置的内存太小,导致了这些问题,建议把mysql的内存配置高一些,比如2G试试,实际上包设置太大,很容易导致丢包,而包太小,也会导致频繁的收发网络报,影响系统性能,一般都是设置为4096

#6


你分配的值1073741824已到极限,根本就不需要这么大的空间,1073741824/1024/1024/1024=1G,这个值一般设置为32M就可以了。33554432=32M。

#7


引用 6 楼 kxjrzyk 的回复:
你分配的值1073741824已到极限,根本就不需要这么大的空间,1073741824/1024/1024/1024=1G,这个值一般设置为32M就可以了。33554432=32M。


现在查询的值,已经超过了32M 

#8


引用 4 楼 who_is_xiaoming 的回复:
http://bbs.csdn.net/topics/390983183? 
这里面的情况 每一个和你一致的? 不会是电脑被攻击了吧  关于max_allowed_packet这个值设置后自动重置问题    


怎么可能,才部署的机器

#9


引用 8 楼 shijing266 的回复:
怎么可能,才部署的机器

不懂  帮顶  祝好运  关于max_allowed_packet这个值设置后自动重置问题

#10


这个可能要看下源码,有可能你设置的数值太大,导致mysql制动还原了,看下错误日志有没有相关的资料,只是猜测

#11


引用 10 楼 u011575570 的回复:
这个可能要看下源码,有可能你设置的数值太大,导致mysql制动还原了,看下错误日志有没有相关的资料,只是猜测


之前设置32M也会还原

#12


可以看错误日志吗,或者其他类日志,有没有这块的信息

#13


引用 12 楼 u011575570 的回复:
可以看错误日志吗,或者其他类日志,有没有这块的信息


第一张图

#14


该回复于2016-06-23 16:21:25被版主删除

#15


引用 13 楼 shijing266 的回复:
Quote: 引用 12 楼 u011575570 的回复:

可以看错误日志吗,或者其他类日志,有没有这块的信息


第一张图

这只是一个配置文件图。没什么有用的信息,配置文件只是启动的时候读取下吧

#16


引用 15 楼 u011575570 的回复:
Quote: 引用 13 楼 shijing266 的回复:

Quote: 引用 12 楼 u011575570 的回复:

可以看错误日志吗,或者其他类日志,有没有这块的信息


第一张图

这只是一个配置文件图。没什么有用的信息,配置文件只是启动的时候读取下吧


配置信息才是重要的啊,主要是后面自动还原了,  而且,你确定你看了第一张图?

#17


引用 16 楼 shijing266 的回复:
Quote: 引用 15 楼 u011575570 的回复:

Quote: 引用 13 楼 shijing266 的回复:

Quote: 引用 12 楼 u011575570 的回复:

可以看错误日志吗,或者其他类日志,有没有这块的信息


第一张图

这只是一个配置文件图。没什么有用的信息,配置文件只是启动的时候读取下吧


配置信息才是重要的啊,主要是后面自动还原了,  而且,你确定你看了第一张图?

第一张图太小了,确实没看到。不好意思。第一张图是代码运行抛出来的吧。配置文件是很重要,但是在mysql启动的时候用下,之后 就会经常读取里面的所有参数了吧,所有后面这个参数为什么会还原,可能是在代码层面被重置了。这是我的理解,配置文件重要但不是每次都要去访问配置文件

#18


引用 5 楼 yupeigu 的回复:
max_allowed_packet.意思是最大允许传输包的大小,也就是查询出结果后,把结果发送到客户端时,每个网络包的最大的大小。

如果你给mysql配置的内存太小,导致了这些问题,建议把mysql的内存配置高一些,比如2G试试,实际上包设置太大,很容易导致丢包,而包太小,也会导致频繁的收发网络报,影响系统性能,一般都是设置为4096

4096是2M么   我前几天改成20M了,昨天又出现了还原的情况

#19


google 查的 关键字 max_allowed_packet reset 1024
结果 
http://mycodkit.blogspot.kr/2016/01/maxallowedpacket-in-mysql-is-getting.html?view=timeslide
http://*.com/questions/28979660/why-mysql-max-allowed-packet-reset-to-1m-automatically

总结及解决方法:
1. As mentioned earlier, if the user has super privileges, the connection established with that user has the right to reset the max_packet_size value.
super权限的用户有权限修改max_packet_size数值
2 create a new user.  restart the components with new user name and password of the newly created mysql user.
mysql>CREATE USER 'UserName'@'hostname' IDENTIFIED BY 'Password';
    
            mysql>GRANT SELECT ON *.* TO 'UserName'@'hostname';
            mysql>GRANT INSERT ON *.* TO 'UserName'@'hostname';
            mysql>GRANT UPDATE ON *.* TO 'UserName'@'hostname';
            mysql>GRANT DELETE ON *.* TO 'UserName'@'hostname';
            mysql>flush privileges;

最好是建立新的用户 重启应用.应用使用这个用户。


3. One more thing to note down is, its would always be better if the root user password is changed. It is recommended that root user is not used in any of the components for getting connections. 
应用如果用的是root用户,  改root密码,不推荐root用户在其他的 应用 来取得连接,言下之意就是root 为一个应用独享。

#20


引用 18 楼 shijing266 的回复:
Quote: 引用 5 楼 yupeigu 的回复:


max_allowed_packet.意思是最大允许传输包的大小,也就是查询出结果后,把结果发送到客户端时,每个网络包的最大的大小。

如果你给mysql配置的内存太小,导致了这些问题,建议把mysql的内存配置高一些,比如2G试试,实际上包设置太大,很容易导致丢包,而包太小,也会导致频繁的收发网络报,影响系统性能,一般都是设置为4096

4096是2M么   我前几天改成20M了,昨天又出现了还原的情况


4096应该是4k把

#21


我前段时间也遇到过,改了配置文件不行,还得改root的密码~改复杂一点,字母加数字加特殊字符什么的,改了过后暂时么有出现这个问题了

#22


引用 21 楼 hzw2312 的回复:
我前段时间也遇到过,改了配置文件不行,还得改root的密码~改复杂一点,字母加数字加特殊字符什么的,改了过后暂时么有出现这个问题了


哎,好吧, 不纠结这个问题了,结贴

#23


   后续有解决办法的可以私聊我,谢谢~   关于max_allowed_packet这个值设置后自动重置问题

#1


相关资料和回复  ,但是没有效果

#2


#3


人工置顶来了~

#4


http://bbs.csdn.net/topics/390983183? 
这里面的情况 每一个和你一致的? 不会是电脑被攻击了吧  关于max_allowed_packet这个值设置后自动重置问题    

#5



max_allowed_packet.意思是最大允许传输包的大小,也就是查询出结果后,把结果发送到客户端时,每个网络包的最大的大小。

如果你给mysql配置的内存太小,导致了这些问题,建议把mysql的内存配置高一些,比如2G试试,实际上包设置太大,很容易导致丢包,而包太小,也会导致频繁的收发网络报,影响系统性能,一般都是设置为4096

#6


你分配的值1073741824已到极限,根本就不需要这么大的空间,1073741824/1024/1024/1024=1G,这个值一般设置为32M就可以了。33554432=32M。

#7


引用 6 楼 kxjrzyk 的回复:
你分配的值1073741824已到极限,根本就不需要这么大的空间,1073741824/1024/1024/1024=1G,这个值一般设置为32M就可以了。33554432=32M。


现在查询的值,已经超过了32M 

#8


引用 4 楼 who_is_xiaoming 的回复:
http://bbs.csdn.net/topics/390983183? 
这里面的情况 每一个和你一致的? 不会是电脑被攻击了吧  关于max_allowed_packet这个值设置后自动重置问题    


怎么可能,才部署的机器

#9


引用 8 楼 shijing266 的回复:
怎么可能,才部署的机器

不懂  帮顶  祝好运  关于max_allowed_packet这个值设置后自动重置问题

#10


这个可能要看下源码,有可能你设置的数值太大,导致mysql制动还原了,看下错误日志有没有相关的资料,只是猜测

#11


引用 10 楼 u011575570 的回复:
这个可能要看下源码,有可能你设置的数值太大,导致mysql制动还原了,看下错误日志有没有相关的资料,只是猜测


之前设置32M也会还原

#12


可以看错误日志吗,或者其他类日志,有没有这块的信息

#13


引用 12 楼 u011575570 的回复:
可以看错误日志吗,或者其他类日志,有没有这块的信息


第一张图

#14


该回复于2016-06-23 16:21:25被版主删除

#15


引用 13 楼 shijing266 的回复:
Quote: 引用 12 楼 u011575570 的回复:

可以看错误日志吗,或者其他类日志,有没有这块的信息


第一张图

这只是一个配置文件图。没什么有用的信息,配置文件只是启动的时候读取下吧

#16


引用 15 楼 u011575570 的回复:
Quote: 引用 13 楼 shijing266 的回复:

Quote: 引用 12 楼 u011575570 的回复:

可以看错误日志吗,或者其他类日志,有没有这块的信息


第一张图

这只是一个配置文件图。没什么有用的信息,配置文件只是启动的时候读取下吧


配置信息才是重要的啊,主要是后面自动还原了,  而且,你确定你看了第一张图?

#17


引用 16 楼 shijing266 的回复:
Quote: 引用 15 楼 u011575570 的回复:

Quote: 引用 13 楼 shijing266 的回复:

Quote: 引用 12 楼 u011575570 的回复:

可以看错误日志吗,或者其他类日志,有没有这块的信息


第一张图

这只是一个配置文件图。没什么有用的信息,配置文件只是启动的时候读取下吧


配置信息才是重要的啊,主要是后面自动还原了,  而且,你确定你看了第一张图?

第一张图太小了,确实没看到。不好意思。第一张图是代码运行抛出来的吧。配置文件是很重要,但是在mysql启动的时候用下,之后 就会经常读取里面的所有参数了吧,所有后面这个参数为什么会还原,可能是在代码层面被重置了。这是我的理解,配置文件重要但不是每次都要去访问配置文件

#18


引用 5 楼 yupeigu 的回复:
max_allowed_packet.意思是最大允许传输包的大小,也就是查询出结果后,把结果发送到客户端时,每个网络包的最大的大小。

如果你给mysql配置的内存太小,导致了这些问题,建议把mysql的内存配置高一些,比如2G试试,实际上包设置太大,很容易导致丢包,而包太小,也会导致频繁的收发网络报,影响系统性能,一般都是设置为4096

4096是2M么   我前几天改成20M了,昨天又出现了还原的情况

#19


google 查的 关键字 max_allowed_packet reset 1024
结果 
http://mycodkit.blogspot.kr/2016/01/maxallowedpacket-in-mysql-is-getting.html?view=timeslide
http://*.com/questions/28979660/why-mysql-max-allowed-packet-reset-to-1m-automatically

总结及解决方法:
1. As mentioned earlier, if the user has super privileges, the connection established with that user has the right to reset the max_packet_size value.
super权限的用户有权限修改max_packet_size数值
2 create a new user.  restart the components with new user name and password of the newly created mysql user.
mysql>CREATE USER 'UserName'@'hostname' IDENTIFIED BY 'Password';
    
            mysql>GRANT SELECT ON *.* TO 'UserName'@'hostname';
            mysql>GRANT INSERT ON *.* TO 'UserName'@'hostname';
            mysql>GRANT UPDATE ON *.* TO 'UserName'@'hostname';
            mysql>GRANT DELETE ON *.* TO 'UserName'@'hostname';
            mysql>flush privileges;

最好是建立新的用户 重启应用.应用使用这个用户。


3. One more thing to note down is, its would always be better if the root user password is changed. It is recommended that root user is not used in any of the components for getting connections. 
应用如果用的是root用户,  改root密码,不推荐root用户在其他的 应用 来取得连接,言下之意就是root 为一个应用独享。

#20


引用 18 楼 shijing266 的回复:
Quote: 引用 5 楼 yupeigu 的回复:


max_allowed_packet.意思是最大允许传输包的大小,也就是查询出结果后,把结果发送到客户端时,每个网络包的最大的大小。

如果你给mysql配置的内存太小,导致了这些问题,建议把mysql的内存配置高一些,比如2G试试,实际上包设置太大,很容易导致丢包,而包太小,也会导致频繁的收发网络报,影响系统性能,一般都是设置为4096

4096是2M么   我前几天改成20M了,昨天又出现了还原的情况


4096应该是4k把

#21


我前段时间也遇到过,改了配置文件不行,还得改root的密码~改复杂一点,字母加数字加特殊字符什么的,改了过后暂时么有出现这个问题了

#22


引用 21 楼 hzw2312 的回复:
我前段时间也遇到过,改了配置文件不行,还得改root的密码~改复杂一点,字母加数字加特殊字符什么的,改了过后暂时么有出现这个问题了


哎,好吧, 不纠结这个问题了,结贴

#23


   后续有解决办法的可以私聊我,谢谢~   关于max_allowed_packet这个值设置后自动重置问题