問題 Capistranoで長い時間がかかる処理があるとハングアップしてしまう。 何のエラーメッセージも出ない。 原因 SSHサーバのタイムアウトでコネクションが切れてしまうとCapistrano側で検知できないらしくずっと待ってしまうようだ。 対策 NULLパケットを定期的に飛ばす設定ができれば解決する。 この設定はサーバ側でもクライアント側でもできる。 クライアント側で設定 普通に考えると~/.ssh/configにServerAliveInterval 60とか設定したくなるけど、RubyのNet::SSHはこの設定は見てくれないらしい。 CapistranoからNet:SSHにオプション渡してくれる口があるので、それをつかう。