mysql ‘max_allowed_packet’ 问题

问题描述

mysql ‘max_allowed_packet’ 问题

本人自建一个网站,监控公司内部核心交换机端口流量及CPU利用率,在网站使用过程中发现,php经常无法将数据写入数据库,调试后发现提示"Got a packet bigger than'max_allowed_packet' bytes"。后修改了mysql配置文件,改为max_allowed_packet=512m,保存并重启MYSQL。之后在mysql控制台 show VARIABLES like 'max_allowed_packet';显示也确实是512M,说明mysql中max_allowed_packet已经改为512M了。可是之后还是会出现无法写入问题,调试后仍然显示是Got a packet bigger than'max_allowed_packet' bytes。这个故障发生并无规律可循,一般重启mysql进程后就正常了,但是一段时间后,通常是5-6个小时后,故障重现,然后后续数据全部无法写入。其实写入的数据量其实并不大,是交换机端口的流量的一个json格式文件,在数据库中以mediumtext类型储存。本人将其中8小时的数据复制出来,检查大小为45KB,那么理论上一天的数据量最大也不会超过300K。所以对这个现象感到很困惑。
一下是my.cnf配置文件的[mysqld]部分:
port = 3306
socket = /tmp/mysql.sock
datadir = /usr/local/mysql/var
skip-external-locking
skip-name-resolve
skip-grant-tables
key_buffer_size = 64M
max_allowed_packet = 32M
table_open_cache = 512
sort_buffer_size = 8M
net_buffer_length = 312K
read_buffer_size = 4M
read_rnd_buffer_size = 2M
另外提到一点,就是web服务器每5分钟会执行php页面,也就是说每5分钟就要去读并写入一次,这个问题会不会和php页面被持续执行有关?

本人对mysql具体设置并不在行,请大家帮忙。

解决方案

? ? ? ?最近项目上线前通过把线上环境的数据库导出到本地通过GUI来进行恢复,结果老是在导出的过程中出错,后来发现是由于数据文件太大了(貌似只有6MB多),说可以把把文件拆分成两个就可以导进去了,后来我改用command通过source也能导入成功。
? ? ? ?后来在网上查了下资料,发现是由......
答案就在这里:解决MySQL max_allowed_packet问题

解决方案二:

http://www.2cto.com/database/201212/177090.html

时间: 2025-01-02 16:51:07

mysql ‘max_allowed_packet’ 问题的相关文章

mysql max_allowed_packet 设置过小导致记录写入失败

mysql max_allowed_packet 设置过小导致记录写入失败 mysql根据配置文件会限制server接受的数据包大小. 有时候大的插入和更新会受max_allowed_packet 参数限制,导致写入或者更新失败. 查看目前配置 show VARIABLES like '%max_allowed_packet%'; 显示的结果为: +--------------------+---------+ | Variable_name      | Value   | +--------

mysql max_allowed_packet 查询和修改问题

Error Code:1153 Got a packet bigger than 'max_allowed_packet' bytes错误提示. 开始没注意,提示一大堆,后来才看见这句 使用SQLyog工具导出MySQL数据时,当数据量大时,导出不会错误,但导入时会出现错误.如果将SQL单独执行会发现是Error Code:1153 Got a packet bigger than 'max_allowed_packet' bytes错误. 对于这个问题可以在my.ini中最后增加一行max_a

Mysql“信息包过大”的解决方法

通信信息包是发送至MySQL服务器的单个SQL语句,或发送至客户端的单一行. 在MySQL 5.1服务器和客户端之间最大能发送的可能信息包为1GB. 当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的信息包时,将发出"信息包过大"错误,并关闭连接.对于某些客户端,如果通信信息包过大,在执行查询期间,了能回遇到"丢失与MySQL服务器的连接"错误. 客户端和服务器均有自己的max_allowed_packet变量,因此,如你打算处

MySQL server has gone away

MySQL server has gone away  运行sql文件导入数据库时,会报异常MySQL server has gone away  mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了. 造成这样的原因一般是sql操作的时间过长,或者是传送的数据太大(例如使用insert ... values的语句过长, 这种情况可以通过修改max_allowed_packe

mysql启动的时参数文件中的[mysql]下的参数没有生效

问题描述 mysql启动的时参数文件中的[mysql]下的参数没有生效 my.cnf下的参数如下 [mysqld] 此处省略..... [mysql] #no-auto-rehash prompt='u@h:pd mysql>' #max_allowed_packet = 1024M ##影响mysql导人的速度 #default_character_set = gbk 启动方式 mysqld --defaults-file=/etc/my.cnf & 启动后prompt没有生效 [root

MySQL server has gone away 问题的解决方法_Mysql

mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了. 造成这样的原因一般是sql操作的时间过长,或者是传送的数据太大(例如使用insert ... values的语句过长, 这种情况可以通过修改max_allowed_packed的配置参数来避免,也可以在程序中将数据分批插入). 产生这个问题的原因有很多,总结下网上的分析: 原因一. MySQL 服务宕了 判断是否属于这个

mysql配置变量详解介绍

key_buffer_size 设置这个变量给键缓冲区(或者说键缓存)分配指定大小的空间.但是操作系统只有在实际用到这些空间的时候才会进行分配.例如,将键缓冲区大小设置为1GB,并不意味着服务器就会真正地给它分配1GB空间. 对一个已有的缓存设置非零值将会冲洗缓存,从技术上来说,这是一个在线操作,但是它会阻止所有访问该缓存的动作,直到缓存冲洗完成. table_cache_size 设置这个变量是不会立即生效,要等到下一个线程打开表的时候才会生效.当它生效的时候,MYSQL会检查变量的值.如果值

如何在CentOS 7.x上安装Zephyr测试管理工具

测试管理指测试人员所需要的任何的所有东西.测试管理工具用来记录测试执行的结果.计划测试活动以及汇报质量控制活动的情况.在这篇文章中,我们会向你介绍如何配置 Zephyr 测试管理工具,它包括了管理测试活动需要的所有东西,不需要单独安装测试活动所需要的应用程序,从而降低测试人员不必要的麻烦.一旦你安装完它,你就看可以用它跟踪 bug 和缺陷,和你的团队成员协作项目任务,因为你可以轻松地共享和访问测试过程中多个项目团队的数据. Zephyr 要求 安装和运行 Zephyr 要求满足以下最低条件.可以

本人在在a标签下使用jqzoom出现了一点问题

问题描述 本人在在a标签下使用jqzoom出现了一点问题 现在实在找不出图片了,口头描述一下 本来实现的功能是鼠标移到图片上就放大某个部分. 在div下的img就可以实现 但是在a标签下的img好像样式出错. 请教下各位大神,是在a标签下使用不了jqzoom还是? 解决方案 你把相关代码黏贴出来,我帮你看下 解决方案二: 使用keras出现的一点问题 解决方案三: <%@ page language="java" pageEncoding="UTF-8"%&g