我可以在AWS Elastic Beanstalk上配置Linux交换空间吗?

时间:2016-03-20 20:42:13

标签: amazon-web-services elastic-beanstalk swapfile

我可以为AWS Elastic Beanstalk环境配置Linux交换空间吗?

我在控制台中看不到它的选项。通过查看我的环境/proc/meminfo中正在运行的实例MemAvailable看起来很低,尽管Inactive值非常高t2.nano。我怀疑有一些休眠的后台进程对页面输出没有任何害处,并且可以释放{{1}}我使用的有限物理内存的非平凡部分。

1 个答案:

答案 0 :(得分:5)

我想出了如何使用Tomcat Web应用程序中的.ebextensions config文件夹来完成此操作。

添加文件.ebextensions/swap.config

container_commands:
  add-swap-space:
    command: "/bin/bash .ebextensions/scripts/add-swap-space.sh"
    ignoreErrors: true

添加文件.ebextensions/scripts/add-swap-space.sh

#!/bin/bash

set -o xtrace
set -e

if grep -E 'SwapTotal:\s+0+\s+kB' /proc/meminfo; then
    echo "Positively identified no swap space, creating some."
    dd if=/dev/zero of=/var/swapfile bs=1M count=512
    /sbin/mkswap /var/swapfile
    chmod 000 /var/swapfile
    /sbin/swapon /var/swapfile
else
    echo "Did not confirm zero swap space, doing nothing."
fi

更多文档:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

经过一段时间的运行,这允许在t2.nano实例上交换掉150MiB,该实例运行带有默认堆选项的Elastic Beanstalk Java Tomcat平台。从我可以看到,在应用程序运行时没有正在进行的分页。看起来一些休眠数据已被推送到交换,页面缓存明显更大(从30MiB到180MiB)。