7

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

我在控制台中看不到它的选项。从/proc/meminfo我的环境MemAvailable中运行的实例来看,尽管值很高,但看起来很低Inactive。我怀疑有一些休眠的后台进程不会对分页造成伤害,并且会释放t2.nano我正在使用的有限物理内存的重要部分。

4

1 回答 1

12

我想出了如何使用.ebextensionsTomcat Web 应用程序中的 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

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

于 2016-03-20T20:42:13.137 回答