最近WordPress
上使用的WP Statistics
打开的时候,整个网站都几乎处于卡顿的状态,无法正常访问。
使用top
命令发现主要是mysqld
的CPU
占用很高。于是使用mytop
分析当前执行的查询语句,发现主要是在查询wp_statistics_visitor
表导致的问题(我设置了不要删除浏览记录,因此会导致表内数据偏多)。
大致估计是由于分配给MySQL
的内存不足导致频繁的磁盘交换引起的性能问题。
解决方法比较简单,就是增大MySQL
可以使用的内存即可。
首先确认服务器上的MySQL
使用的存储引擎是否为Innodb
(缺省情况下已经是Innodb
了):
1 |
$ mysql -p -e "show variables like '%storage_engine%';" |
如果确定是Innodb
,则查询Innodb
被限制使用的内存大小,如下:
1 |
$ mysql -p -e "SELECT @@innodb_buffer_pool_size;" |
默认情况下是128MB
,鉴于内存已经不够了,我们扩大到256MB
,这部分内存原则上越大越好,越大与磁盘的交互越少,性能越高。
如下命令调整Innodb
的内存:
1 |
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf |
在[mysqld]
部分增加(如果存在则修改):
1 |
innodb_buffer_pool_size = 256M |
然后重启MySQL
服务:
1 |
$ sudo service mysql restart |
上面的调整之后,性能提升还是比较明显的。