mysql如果并发量不大或者服务器配置不高(只有1-2G内存)时,需要在配置文件中配置几个参数,以减少内存占用。如果不自定义配置这些参数,使用mysql的默认参数,会导致mysql内存占用过高的问题
排查过程:
1、tp5.1框架报错,日志显示无法连接数据库,但我操作的数据量非常少,正常是不会出现这种情况
2、在服务器上用top查看内存情况,发现写入操作时mysql的内存消耗飙升到50%(我的腾讯云的内存才1G)
3、最后发现是mysql内存占用到50%被CentOS强制杀死了进程,导致mysql服务关闭
4、综上所述,是mysql内存占用过高的问题。
在问了一顿度娘之后得出解决方案:
在my.cnf中加入以下配置:
performance_schema_max_table_instances=600
table_definition_cache=400
table_open_cache=256
以上方案主要是通过限制mysql的性能、查询缓存实现的。如果你的服务器内存不像我的服务器这么低,那么正常情况下是不需要改动这些参数的。