問題タブ [client-server]
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.
client-server - サーバー間通信用のMSMQ
サーバーからクライアントへの永続的な「プッシュ」通信のためにMSMQを検討していました。サーバーごとに最大1000のクライアントが存在する可能性があります。
テストの1つでは、300のオフラインクライアントに小さなメッセージを送信してから、オンラインクライアントにメッセージを送信しました。MSMQが配信不能メッセージ(MMCを介して監視)を処理したため、最後のメッセージは40分以上遅延しました。また、MSMQを適切に機能するリターンパスに使用します。
オフラインホストへの接続を試行する時間を短縮することで、MSMQをこの使用パターンに適合させる方法はありますか?そうでない場合は、他に適したキューイング製品はありますか、それとも自分の時間をロールバックしますか?生のスループットは優先事項ではありませんが、クライアント(かなり古いマシンである可能性があります)のメモリフットプリントと同様に、送信キューの数と予測可能性/最大遅延が優先されます。
.net - システムのユーザー数を増やすにはどうすればよいですか?
バックエンド ストレージ用に MS SQL データベースに依存するクライアント/サーバー アプリケーションがあります。サーバー アプリケーションは、データベースの一連の情報から選択してクライアントの要求を処理する WCF TCP サービスです。
このサービスは PerSession として構成され、500 セッションをサポートします。クライアント側では、ユーザーは異なるビューを開くことができます。各ビューにはサービスのオブジェクト (プロキシ オブジェクト) があるため、各ビューはセッションです。各ビューには、プロキシ オブジェクトを使用して毎秒サーバーからデータを要求するスレッド タイマーがあります。
アプリケーションは、8 つのビューを持つ少数のユーザーに対して適切に実行されていますが、数を増やすと、接続プールに利用可能な接続がないため、SqlConnection.Open でタイムアウト例外が発生しました。
WCF サービスはスレッド セーフではないため、ビューごとにセッション/オブジェクトがあります。これは、SqlDataReaders と SqlAdapters を使用するシングル スレッド データベース アクセス レイヤーに依存します。
データベース接続の数を増やす方法はありますか? 800が最大らしいです!! あなたの観点から、どうすればユーザー数を増やすことができますか?
DB レイヤーを変更してマルチスレッド化し、WCF サービスをシングル化しますか? これが設計上のボトルネックだと思います (ADO.net のマルチスレッドに関する記事をお勧めできますか)
PS:
データベースをメモリ内データベースまたはより高速なストレージに置き換えることはできますか?
回答によると:
メソッド呼び出しごとに接続を閉じるようにバックエンド サービスを変更しましたが、ユーザー数が増えるとレイテンシが増加する (1 秒以上) という同じ問題に直面しています。これは、データベース ソリューションを変更する必要があるということですか? 代替ソリューションは何ですか?
その後:
私は2つの解決策を試しました
- メソッド呼び出しごとに SQL 接続を開いたり閉じたりする
- 接続文字列の接続プールのサイズを増やします
しかし、ユーザー数を増やすと、どちらもレイテンシが発生します。同時に、SQL ポーファイラーでクエリを監視すると、各クエリに 20 ミリ秒以上かかることはないようです。
java - サーバーと通信するためのデスクトップ GUI クライアントの作成
私は、長時間実行されるプロセスであるJavaアプリケーションを持っています(それを「サーバー」と呼びましょう)。デスクトップ GUI (ほとんどの場合 Swing) を作成する必要があります。このアプリケーションに接続できる「クライアント」と呼びましょう。
- アプリケーションからのステータス更新の表示
- 特定の「手動でトリガーされた」コマンドをアプリケーションに与える
クライアントとサーバー間の各対話 (会話スレッド) は短くなりますが、上下にいくつかのメッセージが含まれる場合があります。このようなものを実装するためのさまざまなオプションは何ですか? 速度は私にとって大きな問題ではありません。私は、配管の詳細に行き詰まることなく、会話プロトコルを進化させることができる何かにもっと興味があります. 私が今考えているオプションは、ソケット、RMI、JMS、および JavaSpaces です。
c# - マルチスレッドサーバーでのMonitor.Wait/Pulseの競合状態
マルチスレッドTCPサーバーでインターロックされたMonitor.WaitとMonitor.Pulseに問題があります。私の問題を示すために、ここに私のサーバーコードがあります:
そして、これが私のクライアントコードです:
クライアントは7つのメッセージを送信しますが、サーバーは4つしか出力しません。
が呼び出されるまでオブジェクトをロックしているはずなのに、(サーバーのメソッドで)発生する前に(Pulse
サーバーのメソッドで)発生することを許可することでモニターが混乱しているのではないかと思います。そうすれば、メソッドはロックを取得できます。そしてそのを送信します。サーバーのメソッドでこれらの2行をコメントアウトする場合:Accept
Wait
ThreadStart
ThreadStart
sync
Monitor.Wait()
Accept
Pulse
Stop()
残りのメッセージは、サーバーのStop()
メソッドが呼び出されたときに表示されます(つまり、サーバーのオブジェクトをウェイクアップするsync
と、残りの着信メッセージがディスパッチされます)。ThreadStart
これはとメソッド間の競合状態でのみ発生するように思われますが、オブジェクトAccept
の周囲をロックすることでこれを防ぐことができます。sync
何か案は?
サイモン、どうもありがとう。
ps。出力が乱れているなどのことを認識していることに注意してください。特に、ロックとモニターの間の競合状態について質問しています。乾杯、SH。
html - AJAX 応答: データ (JSON、XML) または HTML スニペット?
AJAX応答の「理想的な」出力形式は何ですか? クライアント側の JavaScript テンプレート エンジンを使用して、純粋なデータ (JSON、XML) をページにレンダリングしますか? それとも「そのまま」ページにレンダリングされた HTML スニペットですか?
あなたの好みは何ですか?その理由は何ですか?
networking - アプリケーションがネットワーク トラフィックに与える影響の指標
アプリケーションを作成していて、そのスループット (ネットワーク上で送信される 1 秒あたりのビット数) を任意のレートに設定できます。ただし、ネットワーク上の他のトラフィックが大きな影響を受けない限り、できるだけ高く設定したいと考えています。
問題は、その影響を測定するための適切な指標がないことです。私は次のものを考えましたが、どちらも実際には「完全」ではありません。
- パケットの平均遅延時間の増加
- パケットロスの増加
- ジッターの増加
- TCP トランザクションの完了にかかる平均時間の増加 (http を使用したファイルのダウンロード)
標準的な指標はありますか?ネットワークへのアプリケーションの影響を測定する方法について、他にアイデアはありますか?
ところで - 私はネットワークを完全に制御しており、そのメトリックを計算するために必要な測定を行うことができます。
ありがとう、
ロウリ
client-server - 一部の posix 共有メモリ セグメントと posix セマフォが ipcs に表示されないのはなぜですか
pshared=1 の posix 共有メモリと posix の名前のないセマフォを使用して、クライアント サーバー アプリケーションを構築しました。セマフォは共有メモリ内に配置されます。プログラムは正常に実行されますが、ipcs -m または ipcs -s と入力すると、作成した共有メモリ セグメントまたはセマフォが表示されません。なぜそうなのですか?
client-server - クライアントが予期せずシャットダウンしました
.netリッチクライアントサーバーアプリケーションで作業しています。クライアントはWebサービスを介してサーバーを呼び出しますが、サーバーを呼び出しているときにクライアントが突然シャットダウン(接続が閉じられる)するとどうなりますか?サーバーはこれを検出できますか?クライアントが一連のデータをサーバーデータベースに永続化する要求を送信している場合でも、トランザクションは実行されますか?前もって感謝します