0

我有一个严重依赖延迟工作的应用程序。所以我设置了两台服务器,其中一台服务器启动应用程序(m3.medium ec2 实例),而另一台运行我的延迟作业(t2.micro ec2 实例)。我为延迟的作业创建了一个启动和停止脚本。这是我面临问题的地方。延迟的作业运行平稳,但问题是它们会在一段时间后自动停止。因此,每次它们停止时,我都必须再次手动启动它们。我不知道他们为什么在处理工作的过程中停下来。

所以基本上我有两个问题:

  1. 我该怎么做才能使工作不会停止,或者如果它们停止,它们会立即/或在一段时间后自动启动?

  2. 如何让它们在实例重启/启动时自动启动?

我看过很多类似的问题,但似乎没有任何帮助。

任何建议表示赞赏。

编辑1:

我的延迟作业的启动/停止脚本。

set -e

# drop privs if necessary
if [ "$(id -u)" == "0" ]; then
  exec su $(stat -c %U $(dirname $(readlink -f $0))/../config/environment.rb) -c "/bin/bash $0 $@"
  exit -1;
fi

# switch to app root
cd $(dirname $(readlink -f $0))/..

# set up config
if [ -e "config/GEM_HOME" ]; then
  export GEM_HOME=$(cat config/GEM_HOME)
fi
#export GEM_HOME=/path/to/gem/home
export RAILS_ENV=production

# run delayed jobs
exec script/delayed_job $@

# following an article I have tried adding the following code restart on crash.

# restarting the service 
respawn

#Give up if restart occurs 10 times in 90 seconds.
respawn limit 10 90
4

1 回答 1

0

看来您可能遇到了正在杀死它的内存问题。如果它被杀死,你可以尝试Monit自动启动工作

参考:http ://railscasts.com/episodes/375-monit

替代方案: 您也可以使用 sidekiq 代替延迟作业

于 2017-01-17T13:02:58.163 回答