项目提示 vim_在Linux系统中搭建SpringBoot项目,有时候莫名其妙消失了。

03dcfcbf89be2fdbe4bfdf1cc1783c01.gif

目录

1、前言 2、SWAP分区的配置

来源: https://help.aliyun.com/knowledge_detail/42534.html

1、前言

有时候我们搭建SpringBoot的项目,运行一段时间后会莫名其妙消失掉,而且程序本身没有报致命性的异常。其实那是因为内存不足了,系统将内存占用高的程序给kill掉了。

我们可以查看服务器日志,路径 /var/log/message

搜索message文件中出现的kill,发现日志如下

Sep  3 14:23:29 izj6c1tc06e8b9tdp5pxfiz kernel: Killed process 31450 (java), UID 0, total-vm:2615128kB, anon-rss:429480kB, file-rss:0kB, shmem-rss:0kB

解决方法就是增加物理内存或配置SWAP分区。

2、SWAP分区的配置

概述

本文介绍在Linux实例中,如何配置SWAP分区和常见问题处理。

详细描述

SWAP分区介绍

在Linux系统中的SWAP(交换分区),类似于Windows系统的虚拟内存。系统会把一部分硬盘空间虚拟成内存使用,将系统内非活动内存换页到SWAP,以提高系统可用内存。

注:如果您使用普通云盘,不建议使用SWAP分区。如果是高效云盘或SSD云盘,可以根据实际情况使用SWAP分区。详情请参考参文档ECS实例使用须知。 

SWAP配置介绍

  1. 以root用户身份,通过远程连接登录Linux实例,执行以下命令,创建用于交换分区的文件。

    dd if=/dev/zero of=/mnt/swap bs=block_size count=number_of_block
    注: block_sizenumber_of_block大小可以自定义,比如 bs=1M count=1024代表设置1G大小SWAP分区。
  2. 执行以下命令,设置交换分区文件。

    mkswap /mnt/swap

    a705426045fbdc319d638be725abf7b9.png

  3. 执行以下命令,启用交换分区文件。

    swapon /mnt/swap

    8be7107966315c9f137a159c92eb15e3.pnga2b8222d068833169f33254fd9630bf8.png

    注:如果在 /etc/rc.local中有 swapoff -a需要修改为 swapon -a
  4. 设置开机时自启用SWAP分区,需要修改文件/etc/fstab中的SWAP行,添加以下代码。

    /mnt/swap swap swap defaults 0 0

    0647b3be9d91ec78477763d11a70028f.png

    注: /mnt/swap路径可以修改,可以根据创建的SWAP分区文件具体路径来配置。
  5. 执行以下命令,临时修改swappiness参数值,此处以空闲内存少于10%时才使用SWAP分区为例。

    提示:在Linux系统中,可以通过查看 /proc/sys/vm/swappiness内容的值来确定系统对SWAP分区的使用原则。当  swappiness内容的值为 0时,表示最大限度地使用物理内存,物理内存使用完毕后,才会使用SWAP分区。当 swappiness内容的值为 100时,表示积极地使用SWAP分区,并且把内存中的数据及时地置换到SWAP分区。查看修改前为 0,需要在物理内存使用完毕后才会使用SWAP分区。
    echo 10 >/proc/sys/vm/swappiness

    5d6a476d3a81c8c99dd4c7d7fc3981df.png

  6. 若需要永久修改此配置,在系统重启之后也生效的话,通过vim命令编辑/etc/sysctl.conf文件,并增加以下内容。

    vm.swappiness = 10
  7. 执行以下命令,验证添加成功。

    sysctl -p

关闭SWAP分区

当系统出现内存不足时,开启SWAP可能会因频繁换页操作,导致IO性能下降,可以采用以下方法,关闭SWAP分区。

  1. 执行以下命令,查询SWAP分区设置。

    free -m

    系统显示类似如下。857b077337f388bdf61827bb92fff4e9.png

  2. 执行以下命令,关闭SWAP分区。

    swapoff [$SWAP_File]
    注:[$SWAP_File]SWAP分区标识。

    系统显示类似如下。9c923d37e125f9631cca1119a8dff758.png

  3. 通过vim命令,修改/etc/fstab文件,删除或注释相关配置,取消SWAP的自动挂载,系统显示类似如下。168c15775d1779fe262aee12a1185c37.png

  4. 执行以下命令,确认SWAP分区已经关闭。

    free -m

    系统显示类似如下。78d57ece116e2798f8a5f9cffed663c2.png

  5. 执行以下命令,临时修改swappiness参数值。此处以空闲内存为0%为例。

    echo 0 >/proc/sys/vm/swappiness   
  6. 若需要永久修改此配置,在系统重启之后也生效的话,通过vim命令编辑/etc/sysctl.conf文件,并增加以下内容。

    vm.swappiness = 0
  7. 执行以下命令,验证添加成功。

    sysctl -p

常见问题处理

常见问题描述

使用mkswap创建SWAP时出现类似如下报错信息:

mkswap: error: swap area needs to be at least 40 KiB

17f000cdc46fd0a210e9529af285a336.png

问题原因

指定的SWAP分区文件太小,SWAP分区文件至少应该大于40KB。

解决方法

重新生成更大的文件格式化为SWAP即可。

适用于

  • 云服务器 ECS

b050d4579e8484483a92dbf4ccca2308.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值