我使用如下命令重启 thin
thin restart -C thin.yml
服务器总是会暂停几秒
后来改成了
thin restart -C thin.yml -o 3001
来启动,用户访问网页,也有可能出现 页面错误的提示
有什么办法,可以平稳的重启 Thin, 如同 使用
touch tmp/restart.txt
一样
没用过,不过看 changlog,thin 是可以平滑重启的啊
== 0.6.2 Rambo release
* Server now let current connections finish before stopping, fixes #18
* Fix uploading hanging bug when body is moved to a tempfile,
also delete the tempfile properly upon completion, fixes #25
* 'thin restart' now sends HUP signals rather then stopping & starting, closes #17
* HUP signal now launches a new process with the same options.
而且还可以通过发信号来日志切割:
== 1.4.0 Chromeo
* kill -USR1 $PID for log rotation [catwell].
* Fix HUP signal being reseted after deamonization [atotic].
* Fix error with nil addresses in Connection#socket_address.
和 Unicorn 一样支持 Signal 控制
https://github.com/macournoyer/thin/blob/master/lib/thin/server.rb#L226
已经尝试,1.2.5 版本以上的 Thin 可以用下面的方法来重启
$ kill -HUP `tail tmp/pids/thin.*.pid | grep ^[0-9]`
最安全的方法是起多个实例,前端加个 nginx 代理一下,nginx reload 不会影响用户访问,可以把要重启的 thin 从 nginx 配置中注释掉,reload nginx,然后重启 thin,然后再改 nginx 配置,同样方法重启其他 thin