我在 Amazon Elastic Beanstalk 上运行了一个小型 t1.micro 实例。该应用程序本身是一个 Java Web 服务器,通过 .war 文件上传,可响应来自远程 Heroku Web 应用程序的请求。
部署应用程序后,Heroku 应用程序的请求会将多部分表单数据作为文件输入流和 application/json 的组合发布到该应用程序。出于某种原因,每当发出请求时,实例的运行状况都会迅速跳转到警告,并且在进一步的请求中不可避免地跳转到严重,从而停止响应任何请求。
我一直在试图弄清楚为什么会发生这种情况。我从“健康”选项卡中发现的一件事是,响应请求时内存使用率几乎始终保持在 97% 以上,而另一方面,空闲 CPU 几乎始终保持在 99% 以上。这对我来说似乎很奇怪。
例如,假设我决定将一个 50KB 的 .pptx 文件发布到 Java Web 服务器(大到足以持续导致实例崩溃)。我将其上传,并将其作为流从 Heroku 应用程序发布到 Elastic Beanstalk 实例。实例迅速跳转到警告状态,然后在我认为尝试读取/写入流的 30 秒左右后,再次跳转到严重状态并崩溃。
为什么以流的形式发布到实例的 50KB 文件大到足以使实例崩溃?我发现很难下载日志,因为 AWS 似乎需要很长时间才能生成日志。有没有简单的方法可以增加实例的内存(即我应该跳到更高级别的实例)?感谢您的帮助。