node.jsを使用するマルチプレイヤーサーバーのセットは、ピーク時には1分に約1百万メッセージになります。ソケットを落とさずにサーバーを「正常に」再起動する方法はありますか?基本的には、再開を処理する最良の方法は、プレーヤーにとって通常非常に混乱させるだろうと思っていますか?ソケットを閉じずにリアルタイムのnode.jsサーバーを再起動しますか?
0
A
答えて
1
プロセスが終了すると、OSはプロセスを終了すると、そのプロセスに属しているソケットをすべてクリーンアップします。したがって、単純なサーバーの再起動とソケット接続の維持はできません。
一部のオペレーティングシステムでは、ソケットの所有権をあるプロセスから別のプロセスに渡すことができるため、一時的なプロセスまたは既存の親プロセスを作成することは技術的に実現可能です)、ソケットの所有権を他のプロセスでは、サーバーを再起動し、所有権を新しく開始したプロセスに戻します。私はこれを試したことがない(またはそれについて聞いたことがある)が、実現可能なもののように聞こえる。
ここでは、node.jsにchild.send()
を使用して子プロセスにソケットを転送する場合のsome informationです。これは、net
モジュールで作成されたnode.jsソケットに対してのみ行うことができ、それを行うことに関するいくつかの注意点がありますが、可能です。
そうでない場合、通常の回避策では、接続が閉じられるとクライアントが自動的に再接続します。正常に完了しました。これは、クライアントにかなり透過的になります(ただし、サーバーが実行されていない瞬間を除く)。
1
接続を保存するためにredisまたは一部のインメモリデータベースを使用して、セッションや接続を失うことなくサーバーを再起動しても簡単に再接続できるようにします。それがあなたの必要性に合っているなら、これを試してください。また、再接続中に注意してください接続が低下する可能性がありますので、あなたは非常に簡単に再び接続されます。 socket.io-redis
関連する問題
- 1. Node.jsサーバーに接続されているWebソケットを再起動することはできますか?
- 2. サーバーを再起動せずにDjango ChoiceFieldを再投入する
- 3. 下にあるソケットを閉じずにSSLをシャットダウンしますか?
- 4. 投稿要求がデータを送信せずにサーバーを再起動します(Angular2/Node.js)
- 5. 再起動せずにスプリングブートサービスを再インストールしますか?
- 6. logstashを再起動せずに同じファイルを最初からリロードします
- 7. 意図的にシステムを閉じて再起動するアプリケーション
- 8. Angular2:リアルタイムでhtmlオーディオタグを再起動
- 9. シームレスパッチ再起動せずにGoサーバーを展開する
- 10. サーバーを起動せずにjsonスキーマを生成しますか?
- 11. Windows Cソケット閉じると再接続
- 12. Webサーバーを再起動せずにダッシュをリフレッシュするApacheのエアフローを再起動する
- 13. メインウィンドウを閉じずにTkinterポップアップを自動的に閉じる
- 14. どのようにMongoDBサーバーを再起動し、クラウド上の端末を閉じてください9
- 15. サーバー再起動のNode.jsとSocket.IO通知の警告
- 16. node.jsサーバーの再起動の基本エラー処理
- 17. PlayConsole SBTサーバーを再起動
- 18. Windows 7で閉じるとサブライムテキスト3が再起動しない
- 19. ソケットを閉じずにソケットでブロックされたスレッドを解放する方法はありますか?
- 20. ソケットを閉じると非同期ソケットがクラッシュします
- 21. 窓を閉じずに閉じる
- 22. パイプを閉じずに閉じる
- 23. チャンネル終了/閉じるでソケットを閉じる/閉じる
- 24. django.db.utils.OperationalError:サーバーが予期せず接続を閉じました
- 25. 起動時にソフトキーボードを閉じる
- 26. 再起動のたびにApache Webサーバーを起動する
- 27. クラッシュ後にサーバーを再起動する
- 28. Node.jsサーバーとFlashソケットのテスト
- 29. リフレッシュせずにFirebaseソケットを切断するか、ページを閉じる
- 30. リソースの更新時にIntelliJがサーバーを再起動します
私はあなたがpm2でそれを行うことはできないと思います。それは "ホットリロード"機能を持っていますが、あなたのサーバーが(Webソケットのような)長時間実行されているオープンな接続を保持していない場合にのみ機能します。 pm2のマニュアルでは、具体的に[こちら](http://pm2.keymetrics.io/docs/usage/cluster-mode/#statelessify-your-application)について言及しています。 – robertklep