我可以为AWS Elastic Beanstalk环境配置Linux交换空间吗?
我没有在控制台中看到它的选项。尽管在我的环境中正在运行的实例上查看/proc/meminfo
,但MemAvailable
值却相当低。我怀疑有一些休眠的后台进程对分页不会有任何危害,并且会在我使用的Inactive
上释放有限的物理内存中的重要部分。
最佳答案
我想出了如何使用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)。关于amazon-web-services - 我可以在AWS Elastic Beanstalk上配置Linux交换空间吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36119306/