0

NATトラバーサルを行うためのおもちゃの例をプログラミングしています。広く使用されているデスクトップアプリケーションがどのようにそれを行うかに興味を持って、私はそのトラフィックを分析するためにwiresharkを使用しました。出力を調べた後、サーバー通知(たとえば、「xxxフォルダーに新しいファイルが追加されました」)が、長寿命のHTTP接続を備えたある種のCometメカニズムを使用して機能することに気付きました。しかし、私が最も驚いたのは、トラフィックが少ないにもかかわらず(1つのHTTP GETとその応答が毎分)、TCP接続が閉じられなかったことです。少なくとも20分間、接続が閉じられなかったことを確認できます。

これまでのところ、多くの長寿命のTCP接続を同時に開くと、サーバーのリソース(主にメモリの観点から)がすぐに消費されると理解しています。だから私の質問は、この種のアプリケーションは、このような膨大な数のTCP接続とHTTP接続を長期間にわたって同時に効率的に開いたままにする方法を教えてください。彼らは特別な種類のサーバーを使用していますか?それとも、水平方向にスケーリングするためにハードウェアを追加するだけの問題ですか?

私は運が悪かったので、答えを見つけようとしてたくさんググった。おそらく私はかなり明白な何かを見逃しています。

4

1 に答える 1

1

おそらく、 epoll (Linux)、kqueue (freebsd)、libev、および libevent を調べて、アイデアを得ることができます。

epollのウィキペディアページから:「監視されているファイル記述子の数が多い場所」。「監視対象ファイル記述子」を TCP ソケットに置き換えることができます。

于 2012-05-14T01:48:06.513 に答える