私は3つのシンプロセスを起動していますbundle exec thin start -C /etc/thin/staging.yml
私は rvm を使用しており、ruby のバージョンは ree-1.8.7 です。
の内容/etc/thin/staging.yml
:
---
timeout: 30
pid: /home/myuser/apps/g/shared/pids/thin.pid
max_persistent_conns: 512
servers: 3
chdir: /home/myuser/apps/g/current
port: 3040
require: []
log: /home/myuser/apps/g/shared/log/thin.log
daemonize: true
address: 0.0.0.0
max_conns: 1024
wait: 30
environment: staging
lsof -i :3040-3042
ポート 3040 ~ 3042 でリッスンしている 3 つの Ruby プロセスが表示されますが、pid ファイルには 3 つの異なる (わずかに低い) pid が含まれています。6 つのプロセスすべてが呼び出されます。merb : merb : Master
でthin を停止するとbundle exec thin stop -C /etc/thin/staging.yml
、最初に pid ファイル内のプロセスに QUIT シグナルが送信され、タイムアウト後に KILL シグナルが送信されます。
pid ファイルは削除され、シン ログはサーバーが停止したことを示していますが、ポート 3040 ~ 3042 でリッスンしている 3 つの Ruby プロセスがまだ存在するため、後続のプロセスthin start
は失敗します。
両方のプロセスの出力の唯一の違いlsof -p
は、/lib/libnss_files-2.12.so ライブラリと postgres ソケットです。
私の質問は次のとおりです。
- 中にタイムアウトが発生するのはなぜ
thin stop
ですか? - サーバーごとに 1 つではなく 2 つのプロセスがあるのはなぜですか?
- これをエレガントに修正するにはどうすればよいですか(kill -9なし)