探索前沿技术
      展示技术风采

记录腾讯云服务器mysql服务停止服务的心酸历程

刚本来想打开网站更新下博客文章,突然无法访问,提示数据库连接异常,马上想着登陆云服务器查看日志,发现mysql的日志发生如下的错误,顿时吃惊啊.

远程service mysqld restart无法重新启动mysql,只能重启云服务器。后来发现只要稍微流量大一点,就会出现莫名的的数据库连接错误的情况,然后连上服务器查看,发现mysql进程被结束了,经常出现这种情况,这还怎么得了,然后第一时间查看mysql日志发现是被进程结束了,好端端的怎么就自己结束了呢,这时候想到应该是mysql进程占用太多内存,然后被系统给kill 掉了。
然后 tail /var/log/messages 查看服务器的系统日志/var/log/messages。
然后看了下在mysql自动停止的时间段内,有什么异常的日志信息,日志有提示“Out of memory”这就可以判定,是服务器的内存使用不足,导致系统自动杀死的mysql的进程,果然是内存不足,通过升级服务器的内存可以解决。还有就是linux开启swap(虚拟内存) 也能相应的解决问题, 所以我选择了后者试一试。

在CentOS中添加Swap交换文件,防止内存不足时MYSQL崩溃
添加交换空间有两种选择:添加一个交换分区或添加一个交换文件。推荐你添加一个交换分区;不过,若你没有多少空闲空间可用, 则添加交换文件。

准备工作:
在设置 Swap 文件之前,有必要先检查一下系统里有没有既存的 Swap 文件。
运行以下命令:
swapon -s

如果返回的信息概要是空的,则表示 Swap 文件不存在。
检查文件系统
在设置 Swap 文件之前,同样有必要检查一下文件系统,看看是否有足够的硬盘空间来设置 Swap 。
运行以下命令:
df -hal

检查返回的信息,还剩余足够的硬盘空间即可。

具体步骤如下:
由于开启swap分区会导致硬盘IO性能下降,因此阿里云服务器或者其他的一些云服务器初始状态未配置swap,如果某些应用需要开启swap分区,可以采用如下方法增加:

1、创建用于交换分区的文件
dd if=/dev/zero of=/mnt/swap bs=block_size count=number_of_block
注:block_size、number_of_block 大小可以自定义,比如bs=1M count=1024 代表设置1G大小swap分区
比如我的:dd if=/dev/zero of=/home/swap bs=1024 count=1024000

2、设置交换分区文件
mkswap /home/swap

3、立即启用交换分区文件
swapon /home/swap
如果在/etc/rc.local中有swapoff -a 需要修改为swapon -a

4、设置开机时自启用swap分区
需要修改文件/etc/fstab中的swap行。
添加 /home/swap swap swap defaults 0 0

注:/home/swap 路径可以修改,可以根据创建的swap文件具体路径来配置。

设置后可以执行free -m命令查看效果。

ps:观察设置交换空间后的运行情况。

×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

赞(0) 打赏
未经允许不得转载:醉探索戈壁 » 记录腾讯云服务器mysql服务停止服务的心酸历程
分享到: 更多 (0)
标签:

给戈壁浇点水

支付宝扫一扫打赏

微信扫一扫打赏