2016-06-17 62 views
0

我有一个完全正常运行的rails应用程序,我最近在AWS上迁移到ECS。AWS + Docker + Puma + Rails + S3,上传几小时后上传失败

我的意思是第一个小时左右,我没有看到任何问题,那么雾和载波宝石上传只是停止,没有日志,所以永远。

在这一刻我失败回到我的服务器,我有这个应用程序直接安装在haproxy loadbalancer背后的NGINX + Passanger模块服务的CentOS服务器之上。

有了这个设置,我可以运行几个月而不重新启动,一切工作都很好。

现在我拿着相同的代码,将它移到一个带有Alpine linux基础映像(用3.3和3.4测试)的docker容器中,在Puma web服务器gem上运行它,并在EC2实例上运行。当我启动它时,一切正常,应用程序感觉更快,但经过一段时间(并非总是同一时期),载波+雾上传到S3不再工作(也不受上传文件数的影响。它工作了几个小时,或者我只能上传一个,而且它也只工作几个小时)。

我没有收到任何错误消息,我没有得到任何应用程序中的日志,我看到的只是加载的gif,永远不会消失。

我已经做了很多测试,结果一样。在这个时候,我打算从Puma转移到不同的web服务器,从Alpine linux到CentOS,并且看看在哪一个迁移阶段停止发生(希望它会发生)。

此外,我很抱歉,但现在我不会分享任何代码,因为我知道代码工作正常,但如果需要什么,我会很乐意将它粘贴在这里。

我只希望有人解决同样的问题,因为我无法在互联网上找到任何东西。

谢谢大家

回答

0

问题在于与应用程序共享内存的缓存。因此,当应用程序运行时,我开始同时上传多个图像,并且亚马逊任务被限制为512MB,然后在上传过程中开始失败。将任务的大小增加到1.5GB,并在至少使用2G内存的小型实例上运行它可以解决问题。