mysql
本人自建一个网站,监控公司内部核心交换机端口流量及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具体设置并不在行,请大家帮忙。