InnoDB: mmap(137363456 bytes) failed; errno 12内存不足如何解决

目前WordPress使用的是InnoDB,如果出现InnoDB: mmap(137363456 bytes) failed; errno 12这类问题,大部分是由于内存不足造成的:

InnoDB: mmap(137363456 bytes) failed; errno 12
InnoDB: mmap(137363456 bytes) failed; errno 12

那如果你的服务器预算费用不是很多,那怎么办呢?不妨尝试一下几个方法。

将数据库降级

将数据类型改为MyISAM,这比InnoDB开销还要小,一般采用先改数据类型,然后降低数据库版本,具体方法可以参考:WordPress数据库如何做降级?,不过这种方法需要一点服务器管理方面的知识,最好先备份网站,如用Duplicator这类插件。

修改innodb_buffer_pool_size大小

修改mysql配置文件my.cnf,添加如下设置参数:把mysql给InnoDB分配的内存设置为8M;

innodb_buffer_pool_size = 8M

给数据库做缓存

将数据库查询的负担,分配到内存,那么可能你会问:本来服务器配置就比较低,分配到内存岂不是更不好了。其实不是这样,将数据库查询分配到内存之后,之后WordPress需要数据查询时就会去从内存去读取,这样mysql的压力就很小,不容易死掉。

目前比较常见的两种方案是Memcached和Redis,Memcached下推荐使用Batcache来实现,Redis下推荐使用Redis Object Cache来实现。

我比较推荐使用Redis Object Cachef方案,配置相对简单一些,效果也很好!

发表回复

您的电子邮箱地址不会被公开。