我開始了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上偵聽的三個ruby進程,但是pid文件包含三個不同的(略低)pid。所有這六個進程都被調用merb : merb : Master
當我用bundle exec thin stop -C /etc/thin/staging.yml
停止稀釋時,瘦首先向PID文件中的進程發送QUIT信號,然後在超時後發出KILL信號。
pid文件現在不見了,瘦日誌顯示服務器已停止,但仍有三個ruby進程在端口3040-3042上偵聽,因此隨後的thin start
將失敗。
兩個進程的輸出lsof -p
之間的唯一區別是/lib/libnss_files-2.12.so庫和postgres套接字。
我的問題是:
- 爲什麼我在
thin stop
得到超時? - 爲什麼每個服務器有兩個進程而不是一個?
- 我該如何解決這個問題優雅(不殺-9)