問題タブ [time-wait]
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.
node.js - TIME_WAIT などの大量のリクエスト - これにより、node.js サーバーの同時実行の問題が発生しますか?
nginx -> node.js サーバーで apachebench を実行していたときに、特定の数の同時リクエストが設定された後、一部のリクエストが完了していないことに気付きました。出力結果は次のss -s
とおりです。
接続の大部分が閉じられ、待機しているようです。これは、負荷が高い場合にうまく機能すると思います。
これらの接続をより速く「リサイクル」することは可能ですか? かなり長い時間(10秒くらい?)
tcp - TIME_WAIT 状態の memcached への接続が多すぎます
memcached への接続に問題があります。忙しい時間帯に空いているローカル ポートはないと思います。
netstat -n | grep "127.0.0.1" | grep TIME_WAIT | トイレ
このコマンドは 36 ~ 50k の接続を提供します。
ポート範囲を拡張するにはどうすればよいですか、またはそれを修正する他の方法はありますか?
c# - HttpListener は接続を TIME_WAIT に残す
ポート 8080 での GET 要求に「OK」と応答する単純な C# Windows サービスがあります。
サービスに対して行われたすべてのリクエストは、TIME_WAIT のままです。私は何か不足していますか?私は周りを見回しましたが、HTTPListeners と Windows サービスで見たほとんどのサンプルは同様の方法でそれを行っていますか?!
編集: _listener の Local 宣言を修正しました。
tcp - 多くの TIME_WAIT によってサーバーがダウンする可能性はありますか?
関連する質問を読みました:
しかし、私はまだ迷っています。2 つのアプリケーション サーバーと 1 つのデータベース サーバーがあります (すべてクラウド サービスによって提供される仮想マシンです)。今日、データベース サーバーは何の警告もなしに完全にシャットダウンしました。クラウド サービス ベンダーにオンラインで復旧してもらうことができ、アプリケーションを再び動作状態に復元しました。
この理由について質問したところ、クラウド サービス ベンダーは次のような一連の TCP 統計情報 (約 1500 行) を返しました (プライバシーのためにマスクされています)。
ベンダーは、多数の接続によって証明されるように、サーバーに問題があり、着信接続が多すぎるためにシャットダウンしたと主張していますTIME_WAIT
。
ただし、統計が収集された時間枠の表示はありませんでした。それらが長い時間範囲で収集された場合、統計を使用して、そのような接続が多数あったと主張することはできません。
このような主張は、特定の時点(時間範囲ではなく) で行われたスナップショット統計に対してのみ有効であり、その時点で多数の接続がそのTIME_WAIT
状態にあることが明らかです。私は正しいですか?
TIME_WAIT
スナップショットの時点で実際に多数の接続があった可能性を認めたとしても、これはサーバーに損害を与えたり、サーバーを停止させたりしますか? これがサービス拒否攻撃の仕組みですか?
java - タイムアウトが与えられたときに無限の時間を待つ
のテストコードがありwait(timeout)
ます。
しかし、これは適切に機能していないようです。理想的には、メソッドで指定された一定の時間待ってrandom
から印刷する必要があります。しかし、いくつかの値を出力した後に停止するたびに(ランダムな回数)。
何が問題なのかを特定できません。
c# - 不十分な winsock リソース
Visual Studio 2008 で作成された ac# Web サービスとクライアントがあります (新しいプロジェクト -> ASP.Net Web サービス アプリケーション)。サービスは、Windows サーバー 2012 R2、IIS 8.5 でホストされています。
クライアントがデータを当社のサービスに送信すると、それをサードパーティのサービスに転送し、結果をデータベースに保存してクライアントに返します。
問題は、ごくまれに、サービスの負荷が高い (1 秒あたりの要求数が多い) 場合に、「ソケット接続の開始を完了するのに十分な Winsock リソースがありません」というスローを開始することです。
私たちの Web サービスがサードパーティ サービスへの多くの TCP 接続を開き、それらを TIME_WAIT 状態のままにしていることがわかりました。このような接続の数が多数 (約 17000) に達すると、サーバー全体が新しい接続を確立できなくなります。リモート デスクトップからインターネット ブラウザまで、すべてが機能しなくなります。これは数分間続き、Windows がこれらの接続を閉じ始めると、通常どおりに再開します。
サード パーティ サービスとの通信のために、サービスはその全期間を通じて 1 つの SoapClient インスタンスのみを使用します。初期化時に作成され、閉じられたり破棄されたりすることはありません。新しいインスタンスが作成されることはありません。
データをサード パーティ サービスに送信するときは、その Web メソッドを呼び出すだけで、閉じたり、破棄したり、クリーンアップを実行したりせずにそのままにしておきます。
この time_wait 接続の蓄積を回避するためにできることはありますか?
SoapClient(s) を管理するより良い方法はありますか? リクエストごとに新しい SOAP クライアントを開き、手動で閉じる必要がありますか?
関連する場合、バインディングの設定方法は次のとおりです。
ありがとうございました!
java - Swing操作を即時にする
Swing にsetScreen(int stage)
は、パラメータに応じて特定のボタンを非表示または非表示にすると呼ばれるいくつかのボタンを非表示および表示するメソッドがありstage
ます。メソッドを呼び出して、数秒待ってから、次のコードのようにもう一度呼び出します。
のコードsetScreen(int stage)
は次のようなものです。
screen は、JFrame を拡張するクラスのインスタンス化です。
ここでの問題はsetScreen(stage)
、変更がコミットされる前にスレッドがスリープ状態になるため、最初のものが表示されないことです。システムの時間をチェックするwhileループをスリープに置き換えてみましたが、効果は同じです。
**編集: ** 推奨される StackOverflow スレッドで、有用な Swing Timer に関する情報を見つけました。私はそれに取り組み、私が行った有用な進歩をアップロードします.