今天咨询大佬明月登楼关于OpenLiteSpeed使用的一些问题,据说这玩意优化wp非常好用,但是大佬一脸不屑,说不如LNMP,于是我就 提及自己的博客经常MySQL会卡死,磁盘I/0会突然有大量的读写,大佬推测可能是因为一些插件不规范,过度的频繁数据库读写造成的,建议我关闭MySQL日志。

附上大佬的原文:WordPress 、Typecho 站点的 MySQL/MariaDB 数据库优化 给需要的朋友参考参考。

一、关闭 MySQL 的日志

MySQL 中的 binlog 日志记录了数据库中数据的变动,便于对数据的基于时间点和基于位置的恢复,但是 binlog 也会日渐增大,占用很大的磁盘空间,同时还会带来一定的 I/O 压力,理论上来说只要我们不使用 MySQL 的主从复制基本很少用到 binglog 日志,所以一般明月都会建议关闭 MySQL 的日志,只需要把 /etc/my.cnf 文件里:

log-bin=mysql-bin
binlog_format=mixed

这两行给注释掉即可,如下图所示:

#log-bin=mysql-bin
#binlog_format=mixed

然后保存退出,重启 MySQL 进程就行了。

注意,当你要使用 MySQL 的主从复制的时候一定要记得开启 MySQL 日志哦!

二、调整数据库 InnoDB 存储引擎的关键参数

一般我们的 MySQL 数据库在编译安装部署的时候都会让选择数据库存储引擎,比较多的选择是 InnoDB 存储引擎,这时候我们就可以在/etc/my.cnf 文件里调整 innodb_buffer_pool_size 和 innodb_buffer_pool_instances 参数来优化 MySQL 的性能。

1、Innodb_buffer_pool_size
innodb_buffer_pool_size 是 InnoDB 存储引擎的关键参数,用于配置 InnoDB 缓冲池的大小。默认大小为 128M,但您应该根据服务器的物理内存进行调整。在专用数据库服务器上,可以将缓冲池大小设置为服务器物理内存的 80%。

2、Innodb_buffer_pool_instances
innodb_buffer_pool_instances 是用于配置多个缓冲池实例的参数。默认情况下,它设置为 1,表示只有一个缓冲池实例。当缓冲池大小大于 1G 时,将innodb_buffer_pool_instances设置为大于 1 的值可以提高服务器的可扩展性。大的缓冲池可以减小多次磁盘 I/O 访问相同的表数据。

假设您的服务器物理内存足够,您可以设置innodb_buffer_pool_size为 1G,并将innodb_buffer_pool_instances设置为 1。请注意,innodb_buffer_pool_size必须是innodb_buffer_pool_instances的倍数。(原本我的默认设置为 Innodb_buffer_pool_size = 256M ,而 Innodb_buffer_pool_instances 没有,现在优化和增加后,期待有一个好的表现!)