有没有办法选择 AWS 中的 VM 或其他服务,以便在额外负载的情况下动态添加内存?
我打算在 AWS 中部署一个小型 EC2。而且我不需要太多内存,因为它只会在从 DB 下载报告时加载。所以基本上我正在寻找最便宜的解决方案,因为机器 90% 的时间都处于闲置状态。
答案1
如果不更改实例类型并停止和启动实例,则无法动态调整 EC2 实例内存。为了避免实例处于空闲状态,您可以使用以下计划启动和停止实例:AWS 实例计划。或者,你可以运行AWS Lambda按照时间表或事件。
答案2
为了扩展@AlexD的答案,拉姆达如果你能用它执行你需要的任务,那么它就是一个很好的工具。其他选项包括使用 Docker 容器在ECS Fargate(也是“无服务器”),或者使用安装了 CloudWatch Agent 的小型 EC2 实例(报告内存使用情况)并设置自动扩展。
答案3
如果您担心实例可能会耗尽内存并导致进程崩溃,那么除了调整实例大小之外,您还可以向实例添加交换分区,以便操作系统可以在物理内存耗尽的情况下将进程内存卸载到磁盘。但这会对性能造成影响,因为 EBS 存储是通过网络连接的,并且并非所有实例类型都允许您使用位于托管实例的物理服务器上的实例存储。但在某些情况下,这比进程崩溃要好。