我在弹性beanstalk上运行了一个RoR应用程序。我偶尔会看到来自Passenger的403个错误。大多数情况下,1台服务器正在运行,但在白天繁忙时段会增加到3或4个实例。
没有打开会话stickeyness
我注意到当启动新服务器时,ELB会在捆绑安装完成之前向其发送请求。
如果我ssh到新启动的服务器,我可以在/ var / app / current /中看到该应用程序尚未安装,如果我运行top,它看起来像是正在运行并使用cc1等编译东西<登记/> /var/app/support/log/passenger.log显示我的rails应用程序中有效网址的请求正在接收并通过404回复。几乎没有惊喜,因为应用程序尚未存在
5-10分钟后,所有编译完成,app文件出现在/ var / app / current中,一切正常。
这对我来说似乎不太合适。如何设置ELB / my rails应用程序,以便ELB可以判断何时可以接收请求?
答案 0 :(得分:4)
我找到了答案。没有应用程序运行状况检查URL设置。在这种情况下,ELB ping实例以查看它是否健康,即它检查它是否已启动而不是如果rails已启动并正在运行。将运行状况检查URL设置为'/ login /'可以为我修复它,因为这会产生404直到运行中的rails和之后的200.
弹性beanstalk在认为实例健康之前需要2个正确的响应。它每5分钟检查一次实例。这意味着实例可能需要一段时间才能开始提供请求。即它需要启动时间+等待elb的下一次轮询+ 5分钟才能看到任何实际流量