この質問にはEventMachineのタグが付けられていますが、あらゆる言語の一般的なBSDソケットソリューションも高く評価されています。
いくつかの背景:
TCPソケットでリッスンしているアプリケーションがあります。これは、通常のSystemVスタイルのinitスクリプトで開始およびシャットダウンされます。
私の問題は、TCPソケットを処理する準備ができるまでに起動するのに時間がかかることです。それほど長くはなく、おそらく5秒だけですが、就業時間中に再起動を実行する必要がある場合は、5秒長すぎます。また、既存の接続を開いたままにして、正常に終了することも重要です。
アプリケーションを再起動する理由は、パッチやアップグレードなどです。残念ながら、私は時々、この種のことをプロダクションで行う必要があるという立場にいます。
質問:
あるプロセスから別のプロセスにTCPリスニングソケットをきちんと引き渡す方法を探しています。その結果、ダウンタイムはほんの一瞬です。新しいプロセスが新しいconnectinoのサービスを開始する間、既存の接続/ソケットを開いたままにして、古いプロセスでの処理を終了したいと思います。
BSDソケットを使用してこれを行うための実証済みの方法はありますか?(EventMachineソリューションのボーナスポイント。)
これを実装しているオープンソースライブラリは、そのまま使用することも、リファレンスとして使用することもできますか?(繰り返しになりますが、RubyおよびEventMachine以外のソリューションも高く評価されています!)