Я запускаю три тонких процесса с 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
покажет три процесса ruby, прослушивающих порты 3040-3042, но файлы pid содержат три разных (чуть более низких) pid. Все шесть процессов называются merb : merb : Master
Когда я останавливаю тонкий с помощью bundle exec thin stop -C /etc/thin/staging.yml
, тонкий сначала отправляет сигнал QUIT процессам в файлах pid, а затем, после тайм-аута, сигнал KILL.
Файлы pid теперь исчезли, тонкие журналы показывают, что сервер остановился, но все еще есть три процесса ruby, прослушивающие порты 3040-3042, поэтому последующий thin start
завершится ошибкой.
Единственное различие между выводом lsof -p
обоих процессов — это библиотека /lib/libnss_files-2.12.so и сокет postgres.
Мои вопросы:
- почему я получаю тайм-аут во время
thin stop
? - почему на сервере два процесса, а не один?
- как мне это исправить элегантно (без kill -9)