私は定期的に(1秒ごとに)plcと通信する必要があります。メッセージを送信してメッセージを受け取ります。この通信にはSocket
クラスを使用します。接続(socket=new Socket(ipaddress, port)
)を開き、messagethen socket.close()
などを送信するか、またはいつもソケットopetを保持するために1秒ごとに必要ですか?ソケットを開いて1秒間閉じるか開いたままにする
答えて
私はあなたがここにTCPソケットの話をしていると仮定します... TCP接続の設定に関与明白な非効率性から離れて
は毎秒あなたも(TIME_WAIT
にソケットを蓄積してしまう可能性が高いですうまくいけばあなたのクライアントに)。
私はおよそTIME_WAIT
を書いてきたし、それは私のブログに、ここでのサーバの拡張性と安定性に関して発生した問題:http://www.serverframework.com/asynchronousevents/2011/01/time-wait-and-its-design-implications-for-protocols-and-scalable-servers.html
は、(1秒に1回は240につながるあなたはソケットを開閉している率を考えます(60 * 4)ソケットは通常の(4分)2MSL TIME_WAIT
の期間にTIME_WAIT
に座っています)これは、TIME_WAIT
ソケットがクライアント上で終わっていると仮定して、あまり問題はないはずです。毎秒たくさんのサーバーに接続していませんが...毎秒サーバーに接続するクライアントがたくさんあり、サーバーがソケットを蓄積していないことを確認していない場合は、TIME_WAIT
状態では、サーバーのスケーラビリティが制限されることがあります。
代わりに、ソケット接続を開いたままにして、障害が発生した場合にのみ開いてください。これは最初にプログラムするのがやや複雑ですが、この方法で接続をプールするほうがかなり効率的です(データを送信するだけで、TCPハンドシェイクを行う必要はありません接続を確立する)、クライアント上ではるかに多くのリソースを効率的に使用できます。あなたは240ソケットを永久に保持していませんTIME_WAIT
クライアントは永続的に接続され、クライアントは常にサーバーに接続できます。しかし、このアプローチのパフォーマンスは、サーバーの実装方法によって異なります。スレッドモデル(クライアント接続ごとに1つのスレッド)を使用する場合、多くのクライアント接続を処理する際にリソースが不足する可能性があります。 「計算」が長生きしていない限り、サーバーが要求を処理するためのイベントベースのアプローチを使用する場合は、永続的なクライアントアプローチを使用することをお勧めします。
いつものように、あなたのユースケースに基づいたベンチマークであり、あなたは良いことがあります。
ソケットを常に接続し続けると、ネットワークトラフィックとクライアントの計算時間が短縮されます。ただし、サーバがブロッキングI/Oを使用している場合、多くのクライアントが接続されたままになると、接続スレッドが不足することがあります。また、タイムアウト、ネットワークの問題、およびサーバーのダウンタイムのために、切断された接続に対処する必要があります。
- 1. JQuery:開いている/閉じるメニュー、開きますが閉じない
- 2. 開いているライトボックスをプログラム的に閉じますか?
- 3. 開いているダイアログボックスをすべて閉じますか? (JQuery)
- 4. 開いているファイルを閉じる?
- 5. Anaconda Navigatorを開いて数秒後に自動的に閉じます
- 6. ファイルを繰り返し開いたり閉じたりするべきですか?長時間(〜1週間)開いておく必要がありますか?
- 7. 開いている場合は強制的にソケットを閉じる
- 8. os.fdopenで開いたファイルを閉じると、os-level fdが閉じますか?
- 9. JavaScript(ボタンを1つ開いて何かを閉じる)
- 10. 店舗の開店時間と閉店時間が開いているときに閉じて表示
- 11. C#で開いているファイルハンドルをすべて閉じます
- 12. 3秒後にjQueryダイアログが開いて自動的に閉じます
- 13. PHP:phpで開かれたsshでソケットを閉じる
- 14. ソケット - データ転送後にソケットを開いたままにする
- 15. ServerSocket.close()は開いているすべてのソケットを閉じますか?私のアプリで
- 16. Javascript:開いたウィンドウを閉じて
- 17. コマンドプロンプトを開いた後、どのように閉じますか?
- 18. Chromeが1秒間開いてクラッシュする
- 19. JavaのURLを開いて閉じる
- 20. Wordpressショートコードを開いて閉じるphp
- 21. バッチでウェブサイトを開いて閉じる
- 22. ファイルを開いてVimを開いて閉じると、ファイルが開かれます。
- 23. アンインストール前にWiXアプリケーションを閉じる - 開いているアプリケーションメッセージを閉じる
- 24. 開いたファイルを閉じてから開いてください
- 25. COM1を開いたままにして、COM1を閉じるにはどうしたらいいですか?
- 26. 1つを除くすべての開いているExcelファイルを閉じる
- 27. 閉じたか開いている括弧のチェッカー
- 28. document.onclick閉じるが、メニューをクリックすると開いたままにする
- 29. 予期しないソケットが閉じられることがある(または開かない)
- 30. フォームを閉じるとき閉じる開いているすべてのメッセージボックスを閉じる方法を