我正在使用 t2.micro 实例在 Amazon AWS 中运行带有 passenger 的 Rails 应用程序(开发服务器)。但是我不断收到 -bash: fork: Cannot allocate memory
错误。
我在其上运行 50 sidekiq 并发的 redis 服务器。通常网站运行良好,但当我同时启动 2-3 个 sidekiq 进程时,请执行一些批处理。该网站需要时间来重定向并最终崩溃
502 Bad Gateway
nginx/1.10.0
然后我必须每次重新启动 nginx 才能让网站再次运行。这是我的开发服务器,所以我不想投入更多的财务资源来升级到 t2.small(截至目前,这是我们最后的选择),因为这是开发服务器,将在 15 天内使用两次。有什么办法可以解决这个问题吗?以前我有与生产相同的 120 并发,但后来我改为 50。这有点帮助,但仍然存在内存问题。
这里有一些htop
的统计数据
此统计数据是在服务器空闲时得出的。但是,当我使用 sidekiq 运行少量任务时,它会因 502 而崩溃。
我检查了几个 post建议交换内存但不确定这是否适用于 t2.micro。这对于此服务器设置是否可取。在图片中,您可以看到我不交换内存。可以添加交换内存来解决这个问题吗?或者还有其他更好的选择。
最佳答案
关于ruby-on-rails - SSH 和 -bash : fork: Cannot allocate memory Ubuntu , rails、Passenger、redis、sidekiq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37806186/