0

我正在使用 t2.micro 实例在 Amazon AWS 中与乘客一起运行 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 而崩溃。

我检查了一些建议交换内存的帖子,但不确定这对于 t2.micro 是否更可取。这对于此服务器设置是否可取。在图片中,您可以看到我不交换内存。可以添加交换内存来解决这个问题还是有其他更好的选择。

4

2 回答 2

3

您的服务器内存不足,要修复它:

然后再试一次

于 2016-06-14T11:18:52.860 回答
0

以我为例,redis用了2.5G内存,服务器一共4.5G,用了3G。1.5G免费。

Redis 一直抛出这个错误。

解决方案:

  1. 添加vm.overcommit_memory=1到文件:/etc/sysctl.conf
  2. sudo sysctl -p /etc/sysctl.conf

参考:redis bgsave failed because fork 无法分配内存

于 2018-12-16T08:20:15.553 回答