Mysql根据ini中给出的max_allowed_packet=??值进行初始化(若无此参数则系统会自己根据自身硬件及运行情况计算出一个初始值)后,若实际运行过程中产生的packet缓存需求大于现行值,则向系统申请所需空间并同时修改该参数现行值;若系统内存资源耗竭无法申请到所需空间时,此参数会初始化为一个默认的最小值1024!此时相应操作就会发生那种报错了。一句话—此报错为系统资源耗竭的结果。
网络上对发生此现象的几种说法包括—1.因未关闭mysql的UDF而受外部攻击所致。2. 系统资源耗竭重分配3.自身程序动态修改了这一参数。据本人推断应为鼎旸的数据结构设计不合理及相关操作没有做很好的优化导致耗费系统资源过度所致!该结论须进一步观察验证。
意见&建议:若经证实,则应急最有效的方法就是扩充服务器硬件配置了。当然最彻底的解决方案还是要找出内存泄漏的原因,如果确实存在的话。