2017-01-17 9 views
0

私は遅延ジョブに大いに依存しているアプリケーションを持っています。だから私は2つのサーバーをセットアップしています。そのうちの1台はアプリケーション(m3.medium ec2インスタンス)を起動し、もう1つは遅延したジョブ(t2.micro ec2インスタンス)を実行します。遅延したジョブの開始スクリプトと停止スクリプトを作成しました。これが私が直面している問題です。遅れたジョブは円滑に実行されますが、しばらくしてから自動的に停止するという問題があります。だからいつも彼らが停止するたびに私はそれらを手動で再開しなければなりません。なぜ彼らは仕事を処理する途中で止まるのか分からない。遅延ジョブはしばらくして停止します

だから、基本的に私は2つの質問している:?ジョブが停止しないように、または、彼らはすぐに/またはいくつかの時間後に自動的に起動しない場合、私は何を

  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 [email protected]" 
    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 [email protected] 

# 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 
+0

t2.microは、CPUスチール上で非常に悪いです、あなたは自動的に殺さ

refの場合、ジョブを開始するMONITを試すことができます。つまり、十分なCPUサイクルが得られない可能性があります。遅延した仕事にタイムアウトがあるかどうかを確認してください。 私はサイドボックスをミディアムボックスで使用しましたが、ログは通常クリアです。 デーモンを使用して自動的に再起動し、質問に追加するログを表示することで、問題を正しく識別するのに役立ちます。 – Sairam

+0

私はまたこれが問題かもしれないと感じました。デーモンツールの使い方を教えてください。私はいくつかの記事を理解しようとしており、そうすることができません。遅延したジョブを開始および停止するために使用しているスクリプトを使用して質問を編集します。 – Ravi

+0

この問題が同じスクリプトで引き続き存在するかどうかを確認するために、より良いボックスに切り替えるか、既存のボックスを使用することをお勧めします。私は 'respawn'を知らない。これは役立つかもしれません - http://superuser.com/questions/507576/how-to-automatically-restart-a-linux-background-process-if-it-fails このサーバーのログを参照してください – Sairam

答えて

0

あなたはそれを殺しているメモリの問題を抱えているようです。 http://railscasts.com/episodes/375-monit

代替:あなたはまた、代わりに遅延ジョブのsidekiqを使用することができ

関連する問題