最近宝塔面板经常提醒MySQL停止服务,一天出现四五次,虽然有进程保护能自动重启,但总归是个问题。
看了面板监控对应的时间点都是内存占用过高,导致系统自动关掉了MySQL进程。
找攻略解决了这个问题,记录一下调整动作,以后再遇到也就知道怎么办了。


修改MySQL配置
1.找到MySQL设置页面,点击“配置文件”。
(路径:宝塔面板,左侧点软件商店 → 顶部选已安装 → 找到 MySQL → 点右侧设置)
2.找到MySQL设置页面,点击“配置文件”,找到 [mysqld] 这个段落。
3.把以下代码复制粘贴到 [mysqld] 下面。
4.在该页面底部点击“保存”,回到“服务”栏点击“重启”或“重载配置”。

配置修改代码:
# 核心缓冲池:2G内存机器设512M最稳妥
innodb_buffer_pool_size = 128M
innodb_buffer_pool_instances = 1
# 关闭非InnoDB引擎缓存
default_storage_engine = InnoDB
key_buffer_size = 16M
# 限制连接数+单连接内存
max_connections = 60
sort_buffer_size = 256K
join_buffer_size = 256K
read_buffer_size = 128K
read_rnd_buffer_size = 256K
# 限制内存临时表大小
tmp_table_size = 32M
max_heap_table_size = 32M
# 关闭性能统计,省100M+内存
performance_schema = OFF
# 自动回收空闲连接
wait_timeout = 600
interactive_timeout = 600
限制PHP的进程数
1.找到PHP设置页面,点击“FPM配置文件”。
2.进程管理模式改为静态,即“pm = static”
3.最大进程数改为5(pm.max_children)。
4.同样保存并重启PHP。

安装Redis缓存
1.还是PHP设置页面,点击“安装扩展”。
2.找到“redis”扩展,操作列点击“安装”。

以上操作安排完,等几分钟,在监控界面查看内存百分比,应该会稳定在40%~60%。
继续运行一天以上,不再出现MySQL停止问题,就说明优化成功了。
