遇到MySQL停止服务问题,用宝塔面板解决了

最近宝塔面板经常提醒MySQL停止服务,一天出现四五次,虽然有进程保护能自动重启,但总归是个问题。

看了面板监控对应的时间点都是内存占用过高,导致系统自动关掉了MySQL进程。

找攻略解决了这个问题,记录一下调整动作,以后再遇到也就知道怎么办了。

面板告警
内存突增问题

修改MySQL配置

1.找到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停止问题,就说明优化成功了。