alex_zhangli 2015-12-31 02:17 采纳率: 20%
浏览 2139

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具体设置并不在行,请大家帮忙。

  • 写回答

2条回答 默认 最新

  • Robot-S 2015-12-31 02:27
    关注

           最近项目上线前通过把线上环境的数据库导出到本地通过GUI来进行恢复,结果老是在导出的过程中出错,后来发现是由于数据文件太大了(貌似只有6MB多),说可以把把文件拆分成两个就可以导进去了,后来我改用command通过source也能导入成功。
           后来在网上查了下资料,发现是由......
    答案就在这里:解决MySQL max_allowed_packet问题
    ----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)