SSH и -bash: fork: невозможно выделить память Ubuntu, rails, Passenger, redis, sidekiq

Я запускаю приложение rails (dev server) с пассажиром в Amazon AWS с экземпляром t2.micro. Но я получаю -bash: fork: Cannot allocate memory ошибка постоянно.

Я использую сервер redis на нем с параллелизмом 50 sidekiq. Обычно сайты работают нормально, но когда я запускаю 2-3 процесса sidekiq одновременно, делаю какой-то пакетный процесс. Сайт займет время, чтобы перенаправить и в конечном итоге сбой с

502 Bad Gateway 
nginx/1.10.0

Затем мне нужно перезагрузить nginx, чтобы сайт снова заработал. Это мой dev-сервер, поэтому я не хочу тратить больше финансовых ресурсов на обновление до t2.small (на данный момент это наш последний вариант), так как это dev servre, и я буду использовать его дважды за 15 дней. Есть ли способ, которым я могу решить это иначе? Раньше у меня был тот же 120 параллелизм, что и на производстве, но потом я изменил на 50. Это немного помогает, но все еще проблемы с памятью.

вот немного статистики с htop

Эта статистика в то время как сервер простаивает. Но когда я запускаю несколько задач с sidekiq, он падает с 502.

Я проверяю несколько постов, предлагающих обмен памяти, но не уверен, что это предпочтительнее с t2.micro. Это целесообразно для настройки этого сервера. Здесь на картинке видно, что я не меняю память. Это нормально, вы можете добавить подкачку памяти для решения этой проблемы или есть какой-то другой лучший вариант.

1 ответ

Решение

У вашего сервера недостаточно памяти, чтобы исправить это:

Тогда попробуйте еще раз

В моем случае, 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 не удалось, поскольку fork не может выделить память

Другие вопросы по тегам