我有一个在eleastic-beanstalk上运行的进程打包为war文件。该过程通过Web服务公开,运行大约需要5分钟,并且是CPU密集型的。但是这个过程总是在大约1分钟后退出运行。这是因为所涉及的CPU工作还是进程运行所需的时间?这些限制可以增加吗?我是EC2的新用户并使用"免费使用等级"
答案 0 :(得分:1)
这很可能是因为Amazon ELB在60秒后超时连接(如果它处于空闲状态(没有数据流))。根据{{3}},您无法自行更改,但您可以请亚马逊支持部门为您更改。
答案 1 :(得分:1)
如果您可以异步运行您的进程,我会考虑使用SQS将Web服务和进程分离。与Worker Environment Tiers相同的概念,但在同一个实例上。
如果您希望保留在“Free Tier”中并拥有750小时的微实例,那么您的Elastic Load Balancer对您无益,因为它始终将请求转发给同一个实例。您可以将环境更改为“单实例”,并在不超时的情况下执行请求。
答案 2 :(得分:1)
我遇到了这个问题,正在使用负载均衡的环境,并希望自动在多个实例上分散负载。
在我的情况下,等待时间只有几秒钟,但是在Web GUI中获得良好的用户体验被认为太长了,所以我不得不做些什么。增加超时既不是问题,也不是我的解决方案。
首先,我尝试通过在WAR中部署Apache MQ来使用JMS。虽然这适用于测试/开发目的,但当我开始扩展时,这并不适合Elastic Beanstalk / EC2做事模型。
我打算使用Amazon SQS,但不想在亚马逊环境中运行(特别是在开发中)。
我最终做的是基于数据库队列(RDS)和this JavaRanch article中的注释创建“mini-JMS”实现。这在开发和现在的生产中都非常有效。
您的最佳前进方式可能取决于用户是否可以在执行处理时等待...