CentOS7增加swap文件

创建Linos虚拟机的时候选择了默认,使用VestaCP的时候又用了默认。
两个默认导致1G内存吃紧,MySQL经常因为申请不到空间而挂掉,而MySQL的监视线程就会去重启MySQL,重启时内存仍旧不足,就此挂掉。
尝试了好多办法缩减https和mySQL服务所占用的内存,有好用的有不好用的,总之杯水车薪。

既然节流不行,那就换个思路试试开源吧。关键字一搜,果然CentOS增加swap文件是非常方便的。
所以这是一个说穿了一文不值的解决方案。

1.用命令查看你的内存和扩展分区是不是不够用

swapon -s
free -m

够用了非要加也没人拦着。

2.查看硬盘空间

df -h

3.创建SWAP文件

sudo fallocate -l 1G /swapfile

1G是大小,按需。创建到根下。

4.把文件转成SWAP

sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

可以用

free -m

验证是否创建成功

5.固定文件
上面创建的文件在重启以后需要重新转换,所以要在启动的时候添加选项

sudo vi /etc/fstab

在最后增加

/swapfile   swap    swap    sw  0   0

大功告成!

已有14条评论

  1. 你把`performance_schema = 0`配上,mysql能省不少内存。我这无swap才512MB内存的就是这么过日子的。

    1. 试过了。我搜到的是`performance_schema = off`,不明显啊。

      1. 那就奇怪了。你的MySQL是什么版本?这个参数是5.6和5.7的。
        如果用5.5,内存本身就应该很省,但是5.5的限制太多了(比如字段长度太小)
        MySQL运行时站过的内存总不释放,除非系统紧缺,所以SWAP也要小心设置大小。

        1. mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1
          VestaCP的默认,没改过。

          1. MariaDB啊,而且对应的是5.5,没有这个参数。

  2. 也有你解决不了的

  3. zhe今天有你折腾的了。

  4. 哟西 你腻害呀 好容易来一次 如此深奥

  5. 这些都是比较实用的,支持

  6. Ctrl+p,搞定,收工。以后搬迁海外或许能用得到。

  7. 你的mysql版本5.几的,1G内存老老实实5.5

  8. 原来1G的机器MySQL会内存不足- – 我一直以为MySQL在任何环境下运行都没事的。。

    1. 离开配置谈性能都是扯淡。

  9. 请问这个code高亮显示插件是什么?

    1. 一个js,叫code prettify。没有插件,照着说明文档自己加的。你要想用可以点我github,代码我开源了。
      JS地址:
      https://github.com/google/code-prettify

        1. 其实有一个(我认为)是最好用的代码高亮插件,叫作 crayon。

  10. 博主这个文章不错,但是一定一定要注意安全问题,一定要把 swapfile 的权限设为 400,也就是除了root 之外没人可以有任何权限。

    另外就是网上其他教程说创建指定大小的文件可以用 dd :
    dd if=/dev/zero of=./swapfile bs=1M count=512
    意思是往硬盘上写零,每次写 1 MB ,写 512 次。

    但是我感觉其实博主的这个方法可能好点,假如它是直接分配空间的话,那就非常迅速了。深挖了一下,其实 fallocate 是 linux 里专有的一个系统调用,也是学到了新的东西。

    感谢博主分享。

你好,新朋友。留言前请先填写昵称邮箱