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