問題タブ [latency]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
networking - TCP ハンドシェイクの遅延
100 Gb/s LAN 上に 2 台のマシンがあり、TCP 経由で互いに通信しています。
クライアントからサーバーに tracert または ping を実行すると、大きな ping であっても、1 ミリ秒未満で応答が得られます。
ただし、クライアント側で TCP パケットをスニッフィングしていると、3 ウェイ ハンドシェイクの最初のメッセージを送信してからサーバーから応答を受信するまでに40 ミリ秒かかることがわかります。
サーバーはこのクライアント専用であり、他には何も処理しません。
これは合理的ですか?はるかに高速になると思います。
javascript - ラッピングクロージャーを使用してAJAXレイテンシーをシミュレートする
AJAXレイテンシーをシミュレートするために、プロトタイプAjax.Requestをラップしたいと思います。つまり、クロージャーとPrototypeのdelay()機能を使用していますが、コードに問題があるようです。
wcf - ネットワーク速度を計算するにはどうすればよいですか:「グッドプット」帯域幅または実際の帯域幅のいずれか?
サーバーと多層システムのさまざまなクライアント間の遅延と帯域幅を特定しようとしています。取得するのが最も簡単なアイテムは「グッドプット」または実効アプリケーション層レートだと思いますが、レイテンシーを取得するのは少し難しいですが、「ウィンドウサイズ」やその他の技術的要因を含む実際の帯域幅はさらに難しいです。
Azureでサーバーを実行できる限り、クライアントまたはサーバーの観点からこれを最も正確に計算する方法の説明を探しています。
私はIISを使用して一連のバイトをストリーミングすることを受け入れています(ただし、これに限定されません)。TCPベースのWCFサービスですが、ソリューションは.NETベースである必要があります。
アップデート
そこには非常に多くの情報があるので、私はこの質問に報奨金を追加しました...それでも、特に.NET実装では、多くが互いに競合しているか、データが欠落しているようです。私は2つの実装C#またはSilverlightを持つことに最も興味があります。
一部のネットワーキングの達人は、TCPウィンドウサイズの「スロースタート」を考慮に入れる必要があると言っています。
mysql - データベースが遠く離れたデータセンターにある場合、Mysqlサーバーはレールでなくなりました
世界中に 2 つのデータセンターがあります。一方のデータセンターで Rails アプリを実行し、もう一方のデータセンターにあるデータベースを指すとします。アプリがスローします
5 ~ 6 の Web リクエストごとに 1 回のように。5000 内部サーバー エラーを表示する
ただし、アプリと mysql db の両方を同じデータセンターに配置した場合。それはうまく動作します。遅延の問題のようです。データベースへのタイムアウトまたは再接続が必要な場合があります。しかし、それを修正する方法がわかりません。どんな助けでも感謝します。
networking - 無負荷ネットワークでの典型的なレイテンシ
アプリケーション全体の遅延の制限要因になるかどうかを判断するために、ネットワークでの典型的な往復時間を知りたいです。ここで負荷の高い 100Mbps ネットワークで測定すると、500µs 未満で 95% の ping が得られ、中央値は 400µs です。
負荷のないネットワークでの一般的な遅延はどのくらいですか? また、ネットワークの帯域幅仕様 (1Gb、10Gb など) は遅延にどのように影響しますか?
latency - リモート ネットワーク メモリ マップ ファイルまたはデバイス ブロックからの読み取りは、ローカル 7200rpm HDD からの読み取りよりも高速ですか?
というか、リモート RAM はローカル ディスク アクセスと比較してどうですか? 答えが「場合による」の場合、条件は何ですか? データ アクセス パターン、読み取りと書き込みの比率、距離など
最後に、ローカル ディスクが NetApp ファイラーの場合はどうなるでしょうか。
ありがとう。
networking - ゲームのネットワークの問題
ゲームに固有のネットワーク設計とトリックを探しています。私はいくつかの問題について知っており、それらのいくつかに対する部分的な解決策がありますが、まだ見えない問題がある可能性があります。これに対する明確な答えはないと思いますが、私は本当に好きな答えを受け入れます。私は4つのカテゴリーの問題を考えることができます。
悪いネットワーク
クライアントから送信されたメッセージは、サーバーに到達するまでに時間がかかります。サーバーはそれらをFCFSで処理することはできません。これは、レイテンシーが高いプレーヤーに対して不公平であるためです。これに対する部分的な解決策はメッセージのタイムスタンプですが、そのためには2つのことが必要です。
- クライアントの時計を信頼できるようになります。(これは不可能だと思います。)
- 測定できる一定のレイテンシ。可変レイテンシーについて何ができますか?
多くのゲームはUDPを使用しているため、メッセージが失われる可能性があります。その場合、彼らはすでに持っている情報に基づいてゲームの状態を推定しようとします。接続が再び機能した後、推定された状態が正しいかどうかをどのように知ることができますか?
MMOゲームでは、サーバーは大量のクライアントを処理します。負荷を分散するための最良の方法は何ですか?ゲーム内の場所に基づいていますか?クライアントのグループをサーバーにバインドしますか?サーバーを介してすべてを送信することを回避できますか?
去るプレーヤー
これが発生したとき、私は2つの異なる動作を見てきました。ほとんどのFPSゲームでは、ゲームをホストしたプレーヤー(私は彼がサーバーだと思います)が他のプレーヤーを離れると、プレイできなくなります。ほとんどのRTSゲームでは、いずれかのプレーヤーが離れた場合、他のプレーヤーは彼なしでプレイを続けることができます。専用サーバーなしでどうやってそれが可能ですか?誰もが完全な状態を知っていますか?彼らはどういうわけかサーバーの役割を移していますか?
情報へのアクセス
次の問題は専用サーバーで解決できますが、専用サーバーがなくても解決できるのではないかと思います。多くのゲームでは、プレーヤーはゲームの完全な状態を知る必要はありません。RTSの戦場の霧とFPSの壁は良い例です。ただし、アクションが有効かどうかを知る必要があります。(たとえば、そこから私を撃つことができますか、それともマップの反対側にいますか?)この場合、クライアントは不明な状態への変更を検証する必要があります。これは、暗号プリミティブを巧みに使用することで解決できるもののように聞こえます。何か案は?
不正行為
上記の問題のいくつかは、信頼できるクライアント環境では簡単ですが、それを想定することはできません。たとえば、80%の通常のユーザー-20%の詐欺師環境で機能するソリューションはありますか?あなたは本当に機能する(そしてカーネルモジュールのようなばかげたものを必要としない)アンチチートソフトウェアを作ることができますか?
私はこの質問といくつかの回答https://stackoverflow.com/questions/901592/best-game-network-programming-articles-and-booksを読みましたが、他の回答は利用できない/制限されたコンテンツにリンクしています。これはプラットフォーム/OSに依存しない質問ですが、特定のプラットフォーム/OS向けのソリューションも歓迎します。
sockets - socket.send から実際にボックスを出るパケットまでのイベントの測定と説明
C# アプリケーションが Socket.Send を呼び出してから、パケットが実際にボックスを出るまでの合計時間を調べようとしています。それを測定するための最良の方法/テクニック/方法論/ツールは何ですか?
パケットが実際にボックスを離れるまで、C# アプリケーションから Socket.Send または BeginSend の間で発生するすべてのことを知り、説明し、測定したいと思います。
http - POSTメソッドとGETメソッド-ネットワークレベルでは、レイテンシの影響が大きくなりますか?
HTTP GETリクエストとPOSTリクエストのネットワーク通信に違いはありますか?
GETを使用すると、リクエスト全体が一度に送信されることを理解しています。POSTでは、最初のリクエストが送信され、次にすべてのパラメータを送信する2番目のリクエストが送信されると思います。
たとえば、サーバーとクライアント間の遅延が500ミリ秒であると想定します。GET呼び出しとPOST呼び出しの合計時間はどれくらいですか?
multithreading - Winsockローカルループバックレイテンシ
私はtcpソケットを使用して、WindowsXP上の2つのアプリ間のプロセス間通信を提供しています。私はさまざまな理由でtcpソケットを選びました。平均往復時間は2.8ミリ秒です。それは私が予想していたよりもはるかに遅いです。プロファイリングは、一方のアプリがsendを呼び出してから、もう一方のアプリがブロックしているrecvが戻るまでの間に遅延があることを示しているようです。
アプリ、デーモン、クライアントもあります。これらは、次の擬似コードのように構成されています。
デーモンスレッド1(新しい接続をリッスンします):
デーモンclient_socketスレッド(クライアントからのパケットをリッスンします):
クライアントスレッド1:
レイテンシーがとても悪い理由はありますか?Nagelのアルゴリズムを疑ったが、コードに次のようなものを散らかした。
助けにはならない。クライアントソケットとデーモンソケットの両方でこれを行う必要がありますか(私はやっています)?
私はクアッドコアマシンを使用しており、負荷やディスクアクティビティなどはほとんどありません。