阿里云单核2G的配置挂着两个企业网站,访问量一般。最近每天几乎都会出现网站打不开显示数据库链接失败的问题。

多方寻求原因发现,mysql的pid文件缺失,并无法重启自建,后来也看了其他帖子说关闭日志什么的未果,查看系统日志发现,是因为内存满了导致mysql进程被杀,然后就一直挂起状态。


Sep 25 11:33:48 iZ28jcqqr7lZ kernel: Out of memory: Kill process 23201 (mysqld) score 53 or sacrifice child

Sep 25 11:33:48 iZ28jcqqr7lZ kernel: Killed process 23201, UID 500, (mysqld) total-vm:444168kB, anon-rss:102612kB, file-rss:120kB


无奈又查询为什么查询量很小的数据库会爆内存,网站之前做过迁移,一直没有事情,新环境下mysql改了innoDB的引擎,怀疑是这个问题。果断重启服务器,启动mysql后,把对应数据库里的表引擎改回了MYISAM。


mysql> use 数据库名

mysql> alter table 表名 engine=myisam;


如果多张表需要改可以考虑批量操作,具体sql语句或脚本大家可以百度下。


改完在mysql配置文件下my.conf加上以下,改默认引擎:

skip-innodb

default-storage-engine=MYISAM

default-tmp-storage-engine=MYISAM

最后重启mysql